Svenska English
Här är de bidrag jag hittills skickat till Minigame 2003. Uppgiften var att skriva ett spel för en åttabitarsdator på maximalt en (1) kilobyte eller fyra (4) kilobyte.
De två program som beskrivs på denna sida är släppta enligt GNU General Public License (svensk översättning), version 2.
Frustrerande.
— Cs.
Till att börja med var äventyret frustrerande, men det är faktiskt inte så illa.
— nich.
Ett trevligt, kort äventyr. Lite för kort :-(
— tjentzsch.
Jag gillade det!
— Wyndex.
Du sköter dig själv när du helt plötsligt transporteras till mitten av en mörk skog i ett fjärran land. Du har ingen aning om vad du gör där, eller hur du ska ta dig ut, det är din uppgift att ta reda på det.
Det här är ett enkelt textäventyrsspel. Det tar kommandon på formen verb substantiv, till exempel: take key. En komplett förteckning över kommandon visas nedan. Ditt första uppdrag i spelet är att ta reda på vad ditt uppdrag är i spelet, och sedan att utföra det uppdrag som ges dig.
Spelet känner igen dessa enordskommandon:
Spelet känner igen följande verb, vilka måste användas tillsammans med ett substantiv:
take, pick up, lift, read, talk to, unlock, open, turn, hit, punch, kick, kill, pour, empty, drink, throw, look at, examine, drop.
Spelet kör på Commodore C64, och är skrivet i C och assembler. Källkoden kan även kompileras så att det kör på de flesta system som har en C-kompilator.
4K-versionen har fått texterna något förkortade från ”fullversionen” av spelet. Tyvärr innehöll versionen jag skickade in ett fel i initieringsrutinen som jag missade innan det var för sent, programmet fungerade fint när jag testade det själv. Spelet kom på 30:e plats av 37 i 4K-kategorin, 50:e av 63 totalt.
Ointressant. Kanske för att jag hatar matematik och luffarschack?
— Dbug.
Oinspirerad variant på ett löst spel
— mcmartin.
En påminnelse på hur långsamma BASIC 7.0:s grafikkommandon kan vara.
— jcompton.
Det är åtminstone originellt! :)
— Wyndex.
Jag gillar att matematik används i den här luffarschaksvarianten! Jag gillar de olika färgerna på pjäserna och spelartexterna. Jag gillar de olika pipen för rätt/fel svar! Snygg användning av C128 BASIC!
— bhz.
Nu har du tvingat mig att skriva en Vicversion till min dotter.
— ottawavic.
Detta är klassiskt luffarschack, men med en specialitet. För att lägga ut din spelpjäs på brädet måste du räkna rätt på ett mattetal. Om du ger fel svar får din motspelare en pjäs.
Först väljer du var du vill placera din pjäs genom att ange rad och kolumn (till exempel A2). Därefter ger du svaret på frågan och trycker Return eller Enter. Ett pip anger om du svarade rätt eller fel.
Den första spelare som får tre på rad eller fem pjäser på brädet vinner. Kom ihåg att du kan ge din motståndare segern om du svarar fel!
Detta spel kör på Commodore C128 i 40-kolumnersläge, och är skrivet helt i BASIC 7.0.
Om spelet startas i 80-kolumnersläge kommer det automatiskt att växla över till 40-kolumnersläge åt dig.
Spelet bygger på tv-programmet ”Prat i kvadrat”, som, har jag för mig, i sin tur bygger på ett amerikanskt program vid namn ”Hollywood Squares”. Eftersom det inte finns någon som helst möjlighet att skriva en hel frågesport på en kilobyte gjorde jag det till ett mattespel istället. Ursprungligen innehöll det samma tal-till-text-rutin som förra årets None Shall Pass, men eftersom spelet då blev halvannan kilobyte redan innan jag lade in grafiken så var jag tvungen att ta bort det tidigt.
Spelet kom på 25:e plats av 26 i 1K-kategorin, 61:a av 63 totalt. Kanske inte så bra plats, men jag hade inte förväntat mig stort mer, precis som förra årets mattespel var det mest en kul grej.
Programmet kan hämtas här.
Startpunkt | ||
---|---|---|
1 | FAST: | Snabba på initieringen (och släck skärmen) |
COLOR.,12:COLOR4,12: | Grå skärm | |
f(1)=6:f(2)=7: | Ställ in spelarfärgerna | |
p$="{ct n}Player": | Sträng som används på några ställen | |
GOSUB2: | Rita spelplanen | |
GOTO9 | Gå till huvudspelrutinen | |
Rita spelplanen | ||
2 | GRAPHIC1,1: | Byt till grafikläge och töm skärmen |
COLOR1,8:CHAR,1,.,"{ct n}Tic Tac Math | Rita rubrik | |
3 | FORr=1TO3: | Tre rader |
y=r*32-16: | Y-koordinat för denna rad | |
COLOR1,1: | Svart pensel | |
CHAR,.,r*4-1,CHR$(64+r): | Rita radetikett | |
CHAR,r*4-2,14,STR$(r): | Rita kolumnetikett | |
IFr<3THEN | Bara två avdelare | |
j=y+28: | Koordinat för avdelare | |
DRAW,j,16TOj,103: | Rita vertikal avdelare | |
DRAW,16,jTO103,j | Rita horisontell avdelare | |
4 | FORk=1TO3: | Tre kolumner |
x=k*32-16: | X-koordinat för denna kolumn | |
WIDTH2:ONb(r,k)GOSUB5,6: | Rita spelpjäsen i den här rutan (om sådan finns) | |
NEXT: | ||
WIDTH1: | Återställ pensel | |
NEXT: | ||
RETURN | ||
Rita spelare ett | ||
5 | COLOR1,6: | Grönt |
DRAW,x,yTOx+22,y+22:DRAW,x+22,yTOx,y+22: | Kryss | |
RETURN | ||
Rita spelare två | ||
6 | COLOR1,7: | Blå |
CIRCLE,x+11,y+11,11: | Cirkel | |
RETURN | ||
Kontrollerad inmatning | ||
7 | DO: | |
GETKEYa$: | Läs en tangent | |
LOOPUNTILINSTR(g$,a$): | Vänta till en giltig tangent tryckts ned | |
RETURN | ||
Vinnare | ||
8 | COLOR1,f(v):CHAR,20,5,p$+STR$(v)+" wins": | Visa vem som vann |
GETKEYa$: | Vänta på en tangent | |
GRAPHIC.: | Återgå till 40-kolumners textläge | |
END | Avsluta | |
Spelrutin | ||
9 | DEFFNr(x)=INT(RND(.)*x+1): | Slumptalsgenerator för intervallet [1,x] |
s=1: | Sätt nuvarande spelare till spelare ett | |
SLOW: | Visa skärmen igen | |
DO: | Huvudslinga för spelet | |
v=s: | V innehåller spelaren som kommer få pjäsen | |
COLOR1,f(s): | Spelarens färg | |
CHAR,20,5,p$+STR$(s): | Tala om vems drag det är | |
q$=" | Rensa indatabufferten | |
20 | DO: | |
CHAR,20,6,"_": | Markör | |
g$="abc":GOSUB7:CHAR,20,6,a$+"_": | Hämta en rad (A-C) | |
h=ASC(a$)-64: | Spara | |
g$="123":GOSUB7:CHAR,21,6,a$: | Hämta en kolumn (1-3) | |
w=VAL(a$): | Spara | |
LOOPWHILEb(h,w) | Håll på tills en tom ruta valts | |
50 | a=FNr(79)+20: | Välj ett slumpmässigt tal för den första termen |
ONFNr(3)GOSUB90,91,92 | Välj räknesätt | |
60 | COLOR1,1:CHAR,2,16,STR$(a)+r$+STR$(b)+" = | Skriv ut problemet |
62 | DO: | |
CHAR,13,16,q$+"_{space*3}": | Visa vad som matats in + markör | |
GETKEYa$: | ||
IFLEN(q$)<4ANDa$>"/"ANDa$<":"THENq$=q$+a$ | Lagra endast max fyra siffror | |
63 | IFa$=CHR$(20)THENq$=" | Delete rensar hela bufferten |
70 | LOOPUNTILa$=CHR$(13): | Håll på tills vi trycker Return eller Enter |
f=30000:l=5: | Ljud för riktigt svar | |
IFVAL(q$)<>cTHEN | Kolla om det är korrekt | |
f=f/3:l=20: | Ljud för felaktigt svar | |
v=3-s | Pjäsen går till motspelaren | |
72 | SOUND1,f,l: | Pip |
b(h,w)=v: | Placera pjäsen på spelplanen | |
GOSUB2: | Skriv ut spelplanen | |
p(v)=p(v)+1 | Öka antalet pjäser för spelaren | |
73 | IFp(v)=5OR | Fem pjäser på spelplanen ger vinst |
b(1,w)=b(2,w)ANDb(2,w)=b(3,w)OR | Se om vi fått en horisontell rad | |
b(h,1)=b(h,2)ANDb(h,2)=b(h,3) | Se om vi fått en vertikal rad | |
THEN8 | Gå till vinnarrutinen | |
75 | IFb(2,2)AND(b(1,1)=b(2,2)ANDb(2,2)=b(3,3)OR | Kolla diagonalen |
b(1,3)=b(2,2)ANDb(2,2)=b(3,1)) | Kolla den andra diagonalen | |
THEN8 | Gå till vinnarrutinen | |
80 | s=3-s: | Nu är det den andra spelarens tur |
LOOP | ||
Addition | ||
90 | b=FNr(79)+20: | Välj den andra termen |
c=a+b: | Rätt svar | |
r$=" +": | Visuell indikering av räknesätt | |
RETURN | ||
Subtraktion | ||
91 | b=FNr(a): | Den andra termen får inte vara högre än den första |
c=a-b: | ||
r$=" -": | ||
RETURN | ||
Multiplikation | ||
92 | a=FNr(60):b=FNr(11)+1: | Välj termerna från en mindre talmängd |
c=a*b: | ||
r$=" {ct n}x": | ||
RETURN |