fb:porticula NoPaste
minesweper
Uploader: | Manello |
Datum/Zeit: | 31.01.2014 19:41:14 |
#DEFINE Offen 16
#DEFINE Fahne 32
#DEFINE Bombe 64
DIM SHARED AS INTEGER Feldbreite=20,Feldhoehe=20,Feldgroesse=20
DIM SHARED AS INTEGER Bombenzahl=50
DIM SHARED AS INTEGER feld(0 TO Feldbreite-1, 0 TO Feldhoehe-1)
DIM SHARED AS ANY PTR BildBombe,BildFahne
SCREENRES Feldbreite*Feldgroesse, Feldhoehe*Feldgroesse, 32
BildBombe=IMAGECREATE(Feldgroesse, Feldgroesse)
BildFahne=IMAGECREATE(Feldgroesse,Feldgroesse)
BLOAD "bombe.bmp", BildBombe
BLOAD "fahne.bmp", BildFahne
DIM AS INTEGER verteilt = 0,x,y
RANDOMIZE
DO
x=INT(RND*Feldbreite)
y=INT(RND+Feldhoehe)
IF feld(x,y)=Bombe THEN CONTINUE DO
feld(x,y)=Bombe
verteilt +=1
LOOP UNTIL verteilt=Bombenzahl
'################################################
FOR i AS INTEGER=0 TO Feldbreite-1
FOR k AS INTEGER=0 TO Feldhoehe-1
LINE (i*Feldgroesse, k*Feldgroesse)-STEP(Feldgroesse-1,Feldgroesse-1),,B
NEXT
NEXT
DIM SHARED AS INTEGER mausX,mausY,mausB,mausX2,mausY2,mausB2,fx,fy,wert
DO
GETMOUSE mausX,mausY,,mausB
IF mausB THEN
fx=mausX \ Feldergroesse
fy=mausY \ Feldergroesse
DO
GETMOUSE mausX2,mausY2,,mausB2
SLEEP 1
LOOP UNTIL mausB2=0
IF mausX2\Feldgroesse <> fx OR mausY2\Feldgroesse <> fy THEN CONTINUE DO
IF mausB=1 THEN
wert=aufdecken(fx,fy)
IF wert=Bombe THEN feldZeigen : GETKEY : EXIT DO
ELSEIF mausB=2 AND (feld(fx,fy) AND Offen)=0 THEN
feld(fx,fy) XOR=Fahne
PUT (fx*Feldgroesse,fy*Feldgroesse),BildFahne, XOR
END IF
END IF
SLEEP 1
LOOP UNTIL INKEY = CHR(27)
IMAGEDESTROY bildBombe
IMAGEDESTROY bildFahne
'################################
FUNCTION aufdecken(x AS INTEGER,y AS INTEGER) AS INTEGER
IF feld(x,y) AND OFFEN THEN RETURN Offen
IF feld(x,y) AND Fahne THEN RETURN Fahne
IF feld(x,y)AND Bombe THEN
PUT (x*FeldGroesse,y*FeldGroesse),BildBombe
feld(x,y)OR= Offen
RETURN Bombe
END IF
DIM AS INTEGER zaehler=0
FOR i AS INTEGER=x-1 TO x+1
IF i <0 OR i>=FeldBreite THEN CONTINUE FOR
FOR k AS INTEGER=y-1 TO y+1
IF k <0 OR k>= FeldHoehe THEN CONTINUE FOR
IF feld(i,k) AND Bombe THEN zaehler+=1
NEXT
NEXT
DRAW STRING ((x+.5)*FeldGroesse-4),STR(zaehler)
feld(x,y)OR=Offen
IF zaehler=0 THEN
FOR i AS INTEGER=x-1 TO x+1
IF i <0 OR i>=FeldBreite THEN CONTINUE FOR
FOR k AS INTEGER=y-1 TO y+1
IF k <0 OR k>=FeldHoehe THEN CONTINUE FOR
aufdecken i,k
NEXT
NEXT
END IF
RETURN zaehler
END FUNCTION
SUB feldZeigen
FOR x AS INTEGER=0 TO FeldBreite-1
FOR y AS INTEGER=0 TO FeldHoehe-1
aufdecken x,y
NEXT
NEXT
END SUB