Schiffe (ver)raten

Im November 2011 entstand im Rahmen meines BA-Seminars „It’s more fun to compute!“ neben dem hier bereits mehrfach erwähnten „Tennis für Drei“ auch ein Spiel für Digitalcomputer: Eine einfache Schiffe-Versenken-Variante, die ich zusammen mit den Studierenden des Kurses sukzessive aus einem Algorithmus für „Zahlenraten“ entwickelt habe. Die Idee dahinter war, das Raten eines Punktes (einer Zahl) auf einer Linie (dem eindimensionalen Zahlenstrahl der natürlichen Zahlen im Intervall N[0,100]) auf eine zweidimensionale Fläche auszudehnen. Der Punkt wird darauf mit zwei Koordinaten lokalisiert.

schiffe-versenken.bas

Der unten aufgeführte Codes ist in der Sprache Chipmunk-BASIC formuliert. Eine Erweiterung hätte noch den Gegenzug des Computers, weitere zu treffende Objekte usw. berücksichtigen sollen. Insbesondere für den ersten Punkt wurde im Kurs bereits der Algorithmus für eine Heuristik des Zahlenratens (eine Rate-KI) formuliert, der auf sukzessive Neueingrenzung des Rate-Intervalls mittels divide and conquer basiert.

Der Code:

10 rem schiffeversenken
20 cls
30 ypos = int(rnd(10)+1)
40 xpos = int(rnd(10)+1)
45 print xpos,ypos
50 gosub 1000 : ' Feld malen
70 print "Schiff versenken"
80 print
100 input "Zeile :",yschuss
110 input "Spalte:",xschuss
120 if xschuss > 11 or xschuss < 1 or yschuss > 11 or yschuss < 1 then 
130        print "Schuss außerhalb des Feldes!"
140        goto 80
150 else 
155        gosub 2000
157        if xschuss = xpos and yschuss = ypos then 
170                print "Getroffen!!"
180                end
190        else 
200                print "Deneben ..."
210                goto 80
220        endif
230 endif
500 end
999 rem Feld malen
1000 graphics 0
1010 for i = 0 to 300 step 30
1020        moveto i,0
1030        lineto i,300
1040        moveto 0,i
1050        lineto 300,i
1060 next i
1070 return
2000 ' Schuss eintragen
2010 if xschuss = xpos and yschuss = ypos then 
2020        for i = 0 to 30
2030                moveto xschuss*30-30+i,yschuss*30
2035                lineto xschuss*30-30+i,yschuss*30-30
2040        next i
2050 else 
2060        moveto xschuss*30,yschuss*30
2070        lineto xschuss*30-30,yschuss*30-30
2080        moveto xschuss*30-30,yschuss*30
2090        lineto xschuss*30,yschuss*30-30
2100 endif
2150 return

Über Stefan Höltgen

siehe: http://about.me/hoeltgen
Dieser Beitrag wurde unter Computer- & Videospiele, Programmiersprachen, Technikgeschichte/RetroTopie, Uni abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.