Ja, om du vill göra ett text spel så ska du
kunna vissa kommando som är ganska grundliga för
qbasic. Det är kommandon som du kommer att få lära dig.
För att lätta upp det hela, har jag delat in det i olika
stycken, som du grad för grad kommer att få bearbeta.

DEL 1 Lär dig skriva saker i olika färg.
DEL 2 Lär dig ställa frågor och sudda bort gammalt från skärmen.
DEL 3 Lär dig att få spelaren att flytta sig.
DEL 4 Lär dig att skriva ut hur mycket pengar/poäng en spelare har.
DEL 5 Lär dig hur man pausar spelet och hur man slutar.
DEL 6 Lär dig hur man gör 50/50 "chanser".
DEL 7 Slutligt exempel.
DEL 8 Tips & Trix.

Ja om du vill lära dig skriva saker till ditt spel, borde
du läsa detta... Med PRINT och COLOR kan du skriva olika saker
i olika färg. Vi börjar direkt med ett exempel.

COLOR 4
PRINT "Vart vill du gå?"

Nu så har COLOR dykt upp. Det gör så att följande kommando
använder denna färgen. I detta fall så blir texten från
PRINT röd. Jo fyran talar om att det ska vara rött.
Som du säkert listat ut så gör PRINT inget mer än att skriva
ut: Vart vill du gå? Men med COLOR kan du bestämma färg.
Så här ser resultatet ut på skärmen:
Vart vill du gå?

Detta stycke handlar om CLS och INPUT
CLS suddar (raderar) bort allt gammalt från skärmen.
Så om du inte vill ha kvar det som du skrev förut, så använder du cls.
Vi kastar oss direkt in i ett exempel.

PRINT "Hej"
CLS

Nu i detta exempel kommer det inte att stå något i skärmen
eftersom att CLS suddar bort "hej" direkt. Du måste ha en paus mellan,
Men det kommer du att få lära dig om senare.
INPUT då? INPUT ställer en fråga på skärmen.
Vi tar ett exempel igen.

INPUT "Vad heter du?"; ni$

Nu när du kör detta programmet så kan du se på skärmen att
efter: Vad heter du? (som är frågan) så kan användaren av
programmet skriva in en text remsa. Men sen för att ladda
vad användaren skrev så måste du göra så här:

INPUT "Vad heter du?"; ni$
PRINT " Jasså, så det är du som är ";ni$

Har du fattat? Om inte, läs om det hela.
Hur man får spelaren att flytta sig?
Med hjälp av: GOTO, IF & THEN kan du lösa detta problemet.
Du måste först göra ett meny val, något i denna stilen:

PRINT " Tryck på 1 för att spela"

Nu vill man ju gärna att när man trycker på 1, så börjar man spela.
Men det går inte utan mer kod.
Vi tar en titt på vad hur det går till.

start:
CLS
PRINT " Tryck på 1 för att spela"
g$ = INPUT$(1)
IF g$ = "1" THEN GOTO spela:
GOTO start:

I början ser vi att det står: start:?
Det är så att jag har döpt frågan till: start.
I vilken nytta?
Jo om användaren av programmet trycker på något annat så
skriver datorn ut frågan igen, utan att det syns!
Hur?
Jo, om du förstod CLS så raderar ju det ut den gammla frågan och skriver den nya!
Men hur kommer den till start igen då?
Jo längst ner på exemplet så ser du ju: GOTO start:
Med GOTO meddelar jag att om någon annan knapp trycks så
går den till frasen som heter start: (Viktigt! Frasnamnet måste sluta med :)
Men vad betyder: g$ = INPUT$(1)
Detta klargör för datorn att g$ (i den här frågan) är en knapp tryckning.
Som i matte, om det står ett: + så vill läraren att du ska lägga ihop något.
IF g$ = "1" THEN GOTO spela:
Nu ställer jag en fråga till datorn, nämligen den
Om g$ (g$ = knapptryckningen) = "1" isåfall gå till spela:
Om, i denna mening, står för IF
isåfall, ska uttrycka THEN
gå till, betyder GOTO
Alltså om knapp-tryckningen blir: 1 så går datorn till spela.
(det stycket finns inte med i detta exempel)

Om ditt spel ska vara lite mer intressant, borde du ha med en
räknare som räknar poäng eller pengar.
Jag visar ett exempel och sen går vi igenom det.

start:
CLS
PRINT "Du har ";poang;" poäng"
SLEEP
extra = 100
poang = poang + extra
GOTO start:

Detta lilla program skriver på skärmen hur många poäng du har.
Första gången du tittar på skärmen när du kör programmet så står det:
Du har 0 poäng
Sen när du trycker på en knapp så märker du att det läggs till 100 poäng.
Hur då?
Jo, SLEEP pausar programmet tills att någon trycker på en knapp. Sen när någon
har tryckt på en knapp så sätter programmet igång att räkna...
Programmet talar om till datorn att extra = 100, alltså att extra har ett värde av 100
Sen kommer den lilla uträkningen som datorn gör, den ser ut så här:
poang = poang + extra, alltså:
0 = 0 + 100
Nu när du har tryckt på knappen så står det:
Du har 100 poäng
Efter som att vi använder oss av GOTO så startar programmet om sig själv
hela tiden!
Men nästa gång du trycker på en knapp, så visar det att du har 200 poäng
Hur då?
Jo, så här ser det ut i programmet:
100 = 0 + 100
extra är alltid 100 och poang blir större.
Pausar och avslutar spelet är ju ganska nödvändigt.
Du är säkert duktig på engelska och förstår vad QBasic kommandona betyder.
Som tex: SLEEP betyder sov och END betyder slut.
Men nu ska du använda dig av dem för att kunna pausa och avsluta ditt spel.
Ett exempel kan ju vara bra:

CLS
PRINT "Men hallå!"
SLEEP
INPUT " Svara då";ni$
PRINT " Du svarade:";ni$
SLEEP 2
PRINT " Nu var det slut"
END

Vi hoppar över det du redan kan... SLEEP stannar ju upp programmet och
väntar på att du ska trycka på en knapp, för att fortsätta.
Men längre ner kan du se att det står: SLEEP 2
Vad betyder det nu då?
Jo, denna pausen är begränsad till 2 sekunder.
Alltså, efter 2 sekunder fortsätter programmet.
END som betyder slut, gör det här också.
Det avslutar programmet. Men det är inte så viktigt att ha med det.
Det är bara viktigt om man använder sig av "SUBs".
Men det ska vi inte gå in på nu.
Hur man gör chanser???
Vad ska nu detta betyda? Vi ger oss in i ett exempel så ska du få se.

CLS
PRINT " Hejsan!"
RANDOMIZE TIMER
X = INT(RND * 2)
IF X = 1 THEN GOTO hej:
IF X = 2 THEN GOTO hejda:

hej:
COLOR 4
PRINT " Hej!"
END

hejda:
COLOR 6
PRINT " Hej då!!!"
END

Nu har vi med X = INT(RND * 2)?!?
Det betyder att X är en gissning mellan 2 olika svar.
Det ena svaret är hej: och det andra hejda:
Programmet väljer ut ett av dessa svar, det är "fifty-fifty"
alltså lika stor chans att programmet väljer det ena som det andra.
Det märker du om du kör detta exempel.
Men man kan ju givetvis ha fler svar!
Men då måste du skriva 3 i stället för 2.
Men jag har ju skrivit RANDOMIZE TIMER. Vad betyder det då?
Det gör så att varje gång du kör programmet så blir det olika svar.
Du kan testa detta exempel utan RANDOMIZE TIMER, då så blir det samma svar
hela tiden... Och det är ju inte så kul.

Ett slutligt exempel...
Nu har ju inte denna kurs gett så mycket. Jag har ju inte lagt ut en kurs
om hur man gör grafik spel. Men det kommer...
Men vissa av dessa kommandon kan vara bra att använda i program som du kanske gör.
Då var det dags...

CLS
COLOR 3
PRINT " Textspels exempel, av Otto Grandin"
SLEEP
meny:
CLS
COLOR 4
PRINT " 1: Starta nytt spel"
PRINT " 2: Avsluta"
g$ = INPUT$(1)
IF g$ = "1" THEN GOTO nytt:
IF g$ = "2" THEN END
GOTO meny:

nytt:
CLS
COLOR 6
INPUT " Vad heter du?";ni$
PRINT " Kör hårt ";ni$;"."
SLEEP
plats: CLS
COLOR 10
PRINT "1: Staden"
PRINT "2: Farmen"
PRINT "3: Avsluta"
COLOR 7
PRINT " Du har ";kr;" kronor."
g$ = INPUT$(1)
IF g$ = "1" THEN GOTO stad:
IF g$ = "2" THEN GOTO farm:
IF g$ = "3" THEN END
GOTO plats:

stad:
CLS
COLOR 3
PRINT " 1: Affären"
PRINT " 2: Prata med gubbe."
PRINT " 3: Gå tillbaka."
PRINT " 4: Avsluta"
COLOR 7
PRINT " Du har ";kr;" kronor."
g$ = INPUT$(1)
IF g$ = "1" THEN GOTO affar:
IF g$ = "2" THEN GOTO gubbe:
IF g$ = "3" THEN GOTO plats:
IF g$ = "4" THEN END
GOTO stad:

affar:
CLS
COLOR 5
PRINT "Vill du köpa något?"
PRINT "1: Ja 2: Nej"
COLOR 7
PRINT " Du har ";kr;" kronor."
g$ = INPUT$(1)
IF g$ = "1" THEN GOTO ja:
IF g$ = "2" THEN GOTO nej:
GOTO affar:

ja: CLS
COLOR 1
PRINT "Ja, jag vill köpa choklad"
SLEEP
PRINT "Det blir 10 kronor."
SLEEP
pris = 10
kr = kr - pris
GOTO stad:

nej:
COLOR 1
PRINT "Nej det vill jag inte!"
SLEEP
GOTO stad:

gubbe:
CLS
COLOR 2
PRINT " Vad vill du då?"
PRINT " Hejdå!!!"
SLEEP
GOTO stad:

farm:
CLS
COLOR 14
PRINT "Howdy ";ni$;" !!!"
PRINT "Välkommen till farmen!"
SLEEP
PRINT "Tack!"
SLEEP
PRINT "Vill du vara med i tjur tävlingen idag???"
PRINT "Jag tänkte väl det! Vi ses..."
SLEEP
COLOR 2
PRINT "Rid på tjuren och försök att inte trilla av!"
SLEEP
COLOR 7
CLS
PRINT " Tjuren hoppar och skuttar men tillslut,"
RANDOMIZE TIMER
X = INT(RND * 2)
IF X = 1 THEN GOTO trilla:
IF X = 2 THEN GOTO klara:

trilla:
PRINT " trillar du av..."
PRINT " Du bryter nacken och dör..."
END

klara:
PRINT " klarar du dig!!!"
PRINT " Du får 10000 kronor i belöning och klarar av spelet!"
END

Tips & Trix
När man gör text spel så finns det inte så många tips...
Men man kan ju lägga in ljud och bilder i alla fall.
Här är några bra program du kan använda för att göra dina text spel roligare.


Playwav Mycket bra program som spelar WAV filer i qbasic.
24bitmap Bra program som laddar bmp bilder i qbasic.
Qmidi Program som spelar midi filer i qbasic.