Hoppa över logotypen.

Mina bidrag till Minigame 2003

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.

The Potion

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.

[Skärmbild från ”The Potion”]

Bakgrund

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.

Instruktioner

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:

  1. n, s, e, w: Förflyttning i ett väderstreck.
  2. i: Visa vad du bär med dig.
  3. look: Visa rumbeskrivning.
  4. quit: Avsluta spelet.
  5. license: Visa licensvillkor (inte i 4k-versionen).

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.

Systemkrav

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.

[CSDb]

Tic Tac Math

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.

[Skärmbild från ”Tic Tac Math”]

Instruktioner

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!

Systemkrav

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.

Kommenterad källkodslistning
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

[CSDb]

[HTML 4.01!] [Alla vävläsare går bra här!] $Date: 2020-10-11 14:36:41 $ | peter@softwolves.pp.se

Åter till Softwolves Commodoresida | Peters hemsida