|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 20.06.2005, 16:02 Titel: Erstes Freebasic-Programm: Game of life |
|
|
Hallo.
Ich hab jetzt mal mit Freebasic angefangen und finde die Mausunterstützung sehr gut. Ich hab auch mal das "GAME OF LIFE" programmiert. Könntet ihr das mal bewerten/verbessern?? Z.B. weiß ich nicht genau wie ich das machen soll, wenn eine lebendige zelle am rand kommt. Bei mir sieht das doof aus.
Wer "Game of life" nicht kennt: LINK
FreeBasic code:
Code: |
SCREEN 18,,1,1
DEFINT A-Z
dim mopel(640,480)
dim mopelb(640,480)
CLS
PRINT "Willkommen beim GAME OF LIFE "
PRINT "Benutzung der Tasten: Beenden: Linke+Rechte Maustaste"
PRINT " Schneller: mausrad hoch"
PRINT " Langsamer: Mausrad runter"
PRINT " Pause: Mittlere Maustaste"
PRINT " Fortsetzen: Mausrad hoch/runter"
PRINT " Steuerung im Benutzer modus: Siehe Benutzermodus"
PRINT
PRINT
INPUT "MOPELS 1: Zufall 2: Benutzer 3: Datei laden ", b
CLS
setmouse 320,240,1
Select case b
case 1
RANDOMIZE TIMER
FOR x% = 50 TO 580
FOR y% = 50 TO 400
mopel(x%, y%) = INT(RND * 6)
mopelb(x%, y%) = mopel(x%, y%)
IF mopel(x%, y%) = 1 THEN PSET (x%, y%), 4
NEXT y%
NEXT x%
case 2
WHILE t <> 2
getmouse x, y,, t
LOCATE 1,1: PRINT "Linke Maustaste->zeichnen Rechte Maustaste->starten"
LINE (1,18)-(635,18)
LINE (1,18)-(1,462)
LINE (635,18)-(635,462)
LINE (635,462)-(1,462)
IF x > 625 THEN x = 625
IF x < 10 THEN x = 10
if y < 25 then y = 25
if y > 450 then y = 450
IF t = 1 THEN
mopel(x+1, y+1) = 1
mopelb(x+1, y+1) = 1
PSET (x + 1, y + 1), 4
ELSEIF t = 3 then end
END IF
WEND
open "mopel.sav" for binary as #1
for x%= 10 to 625
for y%= 25 to 450
put #1,,mopel(x%,y%)
next y%
next x%
close #1
case 3
for x%= 10 to 625
for y%= 25 to 450
open "mopel.sav" for binary as #1
get #1,,mopel(x%,y%)
IF mopel(x%, y%) = 1 THEN
PSET (x%, y%), 4
lebende = lebende + 1
ELSE
PSET (x%, y%), 0
END IF
mopelb(x%, y%) = mopel(x%, y%)
next y%
next x%
case else
end
END select
scrollalt=0
warten=0
LOCATE 1,1: PRINT " "
while ta <> 3
getmouse x, y,scroll, t
IF t = 4 THEN
warten=1
sleep 100
end if
ta=t
if scroll <> scrollalt then
pause%=pause%+(scrollalt-scroll)
scrollalt=scroll
end if
select case pause%
case is < 0
pause% = 0
case is > 10
pause% = 10
end select
do while warten=1
if scroll <> scrollalt then
warten = 0
end if
LOCATE 30, 1: PRINT "Schnelligkeitsstufe 0(schnell) -10(langsam): PAUSE";
getmouse x, y,scroll, t
LOOP
LOCATE 30,45: PRINT " ";
gen = gen + 1
LOCATE 1, 1: PRINT gen; ".GENERATION LEBENDE:"; lebende; " GESTORBENE:"; tote; ""
LOCATE 30, 1: PRINT "Schnelligkeitsstufe 0(schnell) -10(langsam): "; -pause%;
FOR x% = 1 TO 640
FOR y% = 9 TO 480
nachbar = 0
IF mopelb(x% - 1, y%) = 1 THEN nachbar = nachbar + 1
IF mopelb(x% - 1, y% - 1) = 1 THEN nachbar = nachbar + 1
IF mopelb(x% - 1, y% + 1) = 1 THEN nachbar = nachbar + 1
IF mopelb(x%, y% - 1) = 1 THEN nachbar = nachbar + 1
IF mopelb(x%, y% + 1) = 1 THEN nachbar = nachbar + 1
IF mopelb(x% + 1, y% - 1) = 1 THEN nachbar = nachbar + 1
IF mopelb(x% + 1, y%) = 1 THEN nachbar = nachbar + 1
IF mopelb(x% + 1, y% + 1) = 1 THEN nachbar = nachbar + 1
IF nachbar > 3 AND mopel(x%, y%) = 1 THEN mopel(x%, y%) = 0: tote = tote + 1
IF nachbar < 2 AND mopel(x%, y%) = 1 THEN mopel(x%, y%) = 0: tote = tote + 1
IF nachbar = 3 THEN mopel(x%, y%) = 1
NEXT y%
NEXT x%
lebende = 0
FOR x% = 2 TO 634
FOR y% = 19 TO 461
IF mopel(x%, y%) = 1 THEN
IF mopel(x%, y%) <> mopelb(x%, y%) THEN PSET (x%, y%), 4
lebende = lebende + 1
ELSE
IF mopel(x%, y%) <> mopelb(x%, y%) THEN PSET (x%, y%), 0
END IF
mopelb(x%, y%) = mopel(x%, y%)
NEXT y%
NEXT x%
LINE (1,18)-(635,18)
LINE (1,18)-(1,462)
LINE (635,18)-(635,462)
LINE (635,462)-(1,462)
sleep pause%*20
WEND
END
|
Mfg
Michael
EDIT: Hatte nicht soviel Zeit und hab desswegen keine Kommentare.
Zuletzt bearbeitet von Michael712 am 20.06.2005, 16:23, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 20.06.2005, 16:22 Titel: |
|
|
EY!
Denk dir selbst was aus ! Teile vom Code sind voll von meinem Nopel Simulator geklaut.
bravo, du hast den array "nopel" in "mopel" umbenannt, sehr einfallsreich. _________________
|
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 20.06.2005, 16:29 Titel: |
|
|
Ich hab nur den nachbar teil aus deinem Programm, weil ich zu faul war alle koordinaten auszurechnen. Das andere hab ich selber. Weil du mopel(hattest du doch auch) hattest hab ich das einfach übernommen. Aber mehr hab ich von dir NICHT übernommen. Das schwöre ich.
EDIT: Du hast übrigens auch mit qbasic geschrieben und ich hab z.B. gemacht, das der nicht jeden Pixel schreibt, sondern nur den, der sich veröndert hat. Ich hab auch im Grafik mods gearbeitet und in rundenzeit geschrieben. Du hast das in echtzeit gemacht, welches von den regeln her so nicht richtig ist.
Trotzdem sorry, wenn ich die überprüfung von dir genommen hab |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|