Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Erstes Freebasic-Programm: Game of life

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 20.06.2005, 15:02    Titel: Erstes Freebasic-Programm: Game of life Antworten mit Zitat

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


Zuletzt bearbeitet von Michael712 am 20.06.2005, 15:23, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 20.06.2005, 15:22    Titel: Antworten mit Zitat

EY!
Denk dir selbst was aus ! Teile vom Code sind voll von meinem Nopel Simulator geklaut.
peinlich bravo, du hast den array "nopel" in "mopel" umbenannt, sehr einfallsreich.
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 20.06.2005, 15:29    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz