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.
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