Wireworld Simulator
Übersicht

![]() |
FBetreff: Wireworld Simulator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mal einen Wireworld Simulator programmiert.
Wer nicht weiß was das ist : http://de.wikipedia.org/wiki/Wireworld Die Steuerung ist leider erwas verkorkst aber nur mit Maus war es zu ungenau und mit nur Tastatur zu Langsam : Mausklick = Grünes Kreuz Plazieren Pfeiltasten = Grünes Kreuz bewegen 1 = Leitung 2 = Elektronenende 3 = Elektronenkopf 4 = Diode1 5 = Diode2 6 = Zwei Leitungen übereinander F = Plazieren D = Löschen C = Alles leeren P = Abspielen (Gedrückt) ESC = Beenden Code : Code: [AUSKLAPPEN] Const SIZEX = 320 Const SIZEY = 240 Graphics SIZEX ,SIZEY SetBuffer BackBuffer() Dim B%(SIZEX + 1,SIZEY + 1) Dim B2%(SIZEX + 1,SIZEY + 1) XX# = SIZEX / 2 YY# = SIZEY / 2 AC = 1 ClearCells() Repeat Cls If KeyDown(25) Then UpdateCells() If KeyDown(46) Then ClearCells() Color 0,255,0 If KeyHit(2) Then AC = 1 If KeyHit(3) Then AC = 2 If KeyHit(4) Then AC = 3 If KeyHit(5) Then AC = 4 If KeyHit(6) Then AC = 5 If KeyHit(7) Then AC = 6 If KeyDown(200) Then YY = YY - 0.05 If KeyDown(208) Then YY = YY + 0.05 If KeyDown(203) Then XX = XX - 0.05 If KeyDown(205) Then XX = XX + 0.05 Line XX - 1,YY ,XX + 1,YY Line XX,YY - 1,XX,YY + 1 Color 0,0,255 Line MouseX() - 1,MouseY(),MouseX() + 1,MouseY() Line MouseX(),MouseY() - 1,MouseX(),MouseY() + 1 If MouseDown(1) Then XX = MouseX() YY = MouseY() End If If KeyDown(33) Then If AC < 4 Then B2%(XX,YY) = AC If AC = 4 Then B2%(XX,YY) = 1 B2%(XX,YY - 1) = 1 B2%(XX,YY + 1) = 1 B2%(XX + 1,YY + 1) = 1 B2%(XX + 1,YY - 1) = 1 End If If AC = 5 Then B2%(XX + 1,YY) = 1 B2%(XX,YY - 1) = 1 B2%(XX,YY + 1) = 1 B2%(XX + 1,YY + 1) = 1 B2%(XX + 1,YY - 1) = 1 End If If AC = 6 Then B2%(XX,YY + 1) = 1 B2%(XX,YY - 1) = 1 End If End If If KeyDown(32) Then B2%(XX,YY) = 0 DrawCells() Flip Until KeyHit(1) End Function DrawCells() For NX% = 1 To SIZEX For NY% = 1 To SIZEY If B2%(NX%,NY%) = 1 Then Color 255,255,0 Plot NX%,NY% End If If B2%(NX%,NY%) = 2 Then Color 255,0,0 Plot NX%,NY% End If If B2%(NX%,NY%) = 3 Then Color 0,0,255 Plot NX%,NY% End If Next Next End Function Function ClearCells() For NX% = 1 To SIZEX For NY% = 1 To SIZEY B2%(NX%,NY%) = 0 Next Next End Function Function UpdateCells() For NX% = 1 To SIZEX For NY% = 1 To SIZEY B%(NX%,NY%) = B2%(NX%,NY%) B2%(NX%,NY%) = 0 Next Next For NX% = 1 To SIZEX For NY% = 1 To SIZEY NZ% = 0 NZZ% = 0 NZZZ% = 0 If B%(NX%,NY% - 1) = 1 Then NZ% = NZ% + 1 If B%(NX% - 1,NY% - 1) = 1 Then NZ% = NZ% + 1 If B%(NX% - 1,NY%) = 1 Then NZ% = NZ% + 1 If B%(NX% - 1,NY% + 1) = 1 Then NZ% = NZ% + 1 If B%(NX%,NY% + 1) = 1 Then NZ% = NZ% + 1 If B%(NX% + 1,NY% + 1) = 1 Then NZ% = NZ% + 1 If B%(NX% + 1,NY%) = 1 Then NZ% = NZ% + 1 If B%(NX% + 1,NY% - 1) = 1 Then NZ% = NZ% + 1 If B%(NX%,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX%,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 Select B%(NX%,NY%) Case 1 If NZZZ% = 1 Or NZZZ% = 2 Then B2%(NX%,NY%) = 3 Else B2%(NX%,NY%) = 1 End If Case 2 B2%(NX%,NY%) = 1 Case 3 B2%(NX%,NY%) = 2 End Select Next Next End Function Verbesserungsvorschläge erwünscht |
||
BlackTermi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Unbedingt grösser machen. Oder - für alle - Debugger aus bzw. Vollbild rein, damit man keinen Augenkrebs bekommt.
Ist ganz nett geworden, aber so wie jetzt ist das einfach zu ungenau was die Steuerung angeht und mir geht dadurch jede Langzeitmotivation flöten. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum lässt sich mit der Maus nicht direkt das ausgewählte "Leitungsteil" setzen?
Ich würde eine Start/Stop Taste und eine Einzelschritt-Taste auch einem einzigen Keydown vorziehen, da man damit weder das eine noch das andere hat. Es funktioniert zwar gut und regel konform, aber mit den Variablennamen würde ich mir doch ausreichend Kommentierung wünschen, sonst ist's für das Codearchiv eher ungeeignet, weil schwer nach zu vollziehen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
FBetreff: Bessere Steuerung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab die Steuerung stark verbessert. Man setzt mit der Maus Linien.
Linksklick = Linienstartpunkt setzen / linie Zeichnen Rechtsklick = Linienstartpunkt setzen / linie Zeichnen (Löschend) S = Start\Stop 1-6 = Zeichenmodi auswählen (Leiterbahn,Elektronenende...) C = Alles Löschen P = Einen Einzelschritt ESC = Beenden Es ist Ziemlich nerfend wenn man mit der Maus immer über den Pixel fährt den mann anklicken möchte. Deshalb kann man mit den Pfeiltasten die Maus ZUSÄTZLICH Bewegen. Ich hoffe Steuerungsmäßig ist jetzt alles im lot. Code: [AUSKLAPPEN] Const SIZEX = 320 ; Fensterbreite Const SIZEY = 240 ; Fensterhöhe Graphics SIZEX ,SIZEY,32 ; Fenster öffnen SetBuffer BackBuffer() ; Buffer setzen Dim B%(SIZEX + 1,SIZEY + 1) ;Grundfeld Definiren Dim B2%(SIZEX + 1,SIZEY + 1) ;Hauptfeld Definiren LA% = 0 ; Linie nicht aktiv AC = 1 ; Zeichenmodus auf 1 setzen P = 0 ; Nicht Abspielen ClearCells() ; Zellen Löschen ;HAUPTPROGRAMM Repeat ; Wiederhole Cls ; Buffer löschen If KeyHit(2) Then AC = 1 ; Zeichenmodus auf 1 Setzen If KeyHit(3) Then AC = 2 ; Zeichenmodus auf 2 Setzen If KeyHit(4) Then AC = 3 ; Zeichenmodus auf 3 Setzen If KeyHit(5) Then AC = 4 ; Zeichenmodus auf 4 Setzen If KeyHit(6) Then AC = 5 ; Zeichenmodus auf 5 Setzen If KeyHit(200) Then MoveMouse MouseX(), MouseY() - 1 ; Zeichenmodus auf 1 Setzen If KeyHit(208) Then MoveMouse MouseX(), MouseY() + 1 ; Zeichenmodus auf 2 Setzen If KeyHit(203) Then MoveMouse MouseX() - 1, MouseY() ; Zeichenmodus auf 3 Setzen If KeyHit(205) Then MoveMouse MouseX() + 1, MouseY() ; Zeichenmodus auf 4 Setzen If MouseHit(1) Then ; Wenn Maus gedrückt If AC < 4 Then ; Wenn Zeichenmodus kleiner als 4 If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = AC ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = AC ; Punkt auf Hauptfeld setzen Next End If ElseIf AC = 4 Then ; Wenn Zeichenmodus gleich 4 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen ElseIf AC = 5 Then ; Wenn Zeichenmodus gleich 4 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen End If End If If MouseHit(2) Then ; Wenn Maus wurde gedrückt If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = 0 ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = 0 ; Punkt auf Hauptfeld löschen Next End If End If If LA% = 1 Then ; Wenn Linie aktiv Color 125,125,125 ; Setze Farbe auf Grau Line XX,YY,MouseX(),MouseY() ; Zeichne Linie End If If P = 1 Then UpdateCells() ; Wenn Abspielen Aktiv Dann Aktualisiere die Felder If KeyHit(25) Then UpdateCells() ; Wenn P Gedrückt Aktualisiere die Felder If KeyHit(46) Then ClearCells() ; Wenn C Gedrückt Lösche die Felder If KeyHit(31) Then ; Wenn S Gedrückt If P = 0 Then ; Wenn Abspielen nicht Aktiv P = 1 ; Abspielen Aktiv ElseIf P = 1 Then ; Wenn Abspielen Aktiv P = 0 ;Abspielen nicht Aktiv End If End If DrawCells() ; Zeichne Zellen Color 255,255,255 ; Farbe aus Weiß setzen ;Kreuz Zeichnen : Line MouseX() - 1,MouseY(),MouseX() + 1,MouseY() Line MouseX(),MouseY() - 1,MouseX(),MouseY() + 1 Flip ; Wechsle den Buffer Until KeyHit(1) ; slange ESC nicht gedrückt End ; Programm Beenden Function DrawCells() ; Zellen Zeichnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 1 Then ; Wenn Feld an Position NX und NY gleich 1 Color 255,255,0 ; Setze Farbe Plot NX%,NY% ; Setze Punkt an Position NX und NY End If If B2%(NX%,NY%) = 2 Then ; Wenn Feld an Position NX und NY gleich 2 Color 255,0,0 ; Setze Farbe Plot NX%,NY% ; Setze Punkt an Position NX und NY End If If B2%(NX%,NY%) = 3 Then ; Wenn Feld an Position NX und NY gleich 3 Color 0,0,255 ; Setze Farbe Plot NX%,NY% ; Setze Punkt an Position NX und NY End If Next Next End Function Function ClearCells() ; Lösche Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu FensterHöhe B2%(NX%,NY%) = 0 ; Feld an Position NX und NY gleich 0 Next Next End Function Function UpdateCells() ; Aktuallisiere Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe B%(NX%,NY%) = B2%(NX%,NY%) ; Grundfeld an Position NX und NY gleich Hauptfeld an Position NX und NY B2%(NX%,NY%) = 0 ; Hauptfeld an Position NX und NY gleich 0 Next Next For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe NZ% = 0 ; Benachbarte Leiterbahnen NZZ% = 0 ; Benachbarte Elektronenenden NZZZ% = 0 ; Benachbarte Elektronenköpfe If B%(NX%,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links Unten = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts Oben = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX%,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 Select B%(NX%,NY%) Case 1 ; Wenn Feld an Position NX und NY = 1 If NZZZ% = 1 Or NZZZ% = 2 Then ; Wenn Benachbarte Elektronenköpfe gleich 1 oder 2 B2%(NX%,NY%) = 3 ; Feld an Position NX und NY = 3 Else ; Ansonsten B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 End If Case 2 ; Wenn Feld an Position NX und NY = 2 B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 Case 3 ; Wenn Feld an Position NX und NY = 3 B2%(NX%,NY%) = 2 ; Feld an Position NX und NY = 2 End Select Next Next End Function |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist schon sehr vorzeigbar, schön ![]() Was man jetzt noch machen könnte: Eine Anzeige welcher Zeichenmodus drin ist bzw. "ingame" Statistik zum an/abschalten... (und Speichern/Laden-funktionen ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
F |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Anzeige ist Eingebaut nur die Laden und Speichern Funktion zickt rum.
Wenn ich etwas mit s speichere das ist die Datei 75 kb Groß. Ich habe aber ausgerechnet das die Datei 600kb Groß sein Müsste. Wenn ich sie Lade kommt das Gespeicherte 4 mal kleiner und drei mal untereinander. Ich habe keine idee woran das liegen könnte und hoffe das mir irgendjemand erklären kann wie ich die Laden\Speichern Funktion Hinkriege. Die Steuerung bleibt weitgehend normal. Anderungen : Enter = Start\Stop Neuer Zeichenmodus 7 S = Speichern L = Laden Die neue Anzeige zeigt auch das Aussehen der Bauteile an die man setzen kann. Eigentlich müsste es jetzt schneller Laufen da ich Plot durch WritePixel ersetzt habe. Code: [AUSKLAPPEN] Const SIZEX = 320 ; Fensterbreite Const SIZEY = 240 ; Fensterhöhe Graphics SIZEX ,SIZEY,32 ; Fenster öffnen SetBuffer BackBuffer() ; Buffer setzen Dim B%(SIZEX + 1,SIZEY + 1) ;Grundfeld Definiren Dim B2%(SIZEX + 1,SIZEY + 1) ;Hauptfeld Definiren LA% = 0 ; Linie nicht aktiv AC = 1 ; Zeichenmodus auf 1 setzen P = 0 ; Nicht Abspielen Const GELB = 1*$1000000 + 255*$10000 + 255*$100 + 0 ; Gelbwert ausrechnen Const ROT = 1*$1000000 + 255*$10000 + 0*$100 + 0 ; Rotwert ausrechnen Const BLAU = 1*$1000000 + 0*$10000 + 0*$100 + 255 ; Blauwert ausrechnen ClearCells() ; Zellen Löschen ;HAUPTPROGRAMM Repeat ; Wiederhole Cls ; Buffer löschen If KeyHit(2) Then AC = 1 ; Zeichenmodus auf 1 Setzen If KeyHit(3) Then AC = 2 ; Zeichenmodus auf 2 Setzen If KeyHit(4) Then AC = 3 ; Zeichenmodus auf 3 Setzen If KeyHit(5) Then AC = 4 ; Zeichenmodus auf 4 Setzen If KeyHit(6) Then AC = 5 ; Zeichenmodus auf 5 Setzen If KeyHit(7) Then AC = 6 ; Zeichenmodus auf 6 Setzen If KeyHit(200) Then MoveMouse MouseX(), MouseY() - 1 ; Zeichenmodus auf 1 Setzen If KeyHit(208) Then MoveMouse MouseX(), MouseY() + 1 ; Zeichenmodus auf 2 Setzen If KeyHit(203) Then MoveMouse MouseX() - 1, MouseY() ; Zeichenmodus auf 3 Setzen If KeyHit(205) Then MoveMouse MouseX() + 1, MouseY() ; Zeichenmodus auf 4 Setzen If MouseHit(1) Then ; Wenn Maus gedrückt If AC < 4 Then ; Wenn Zeichenmodus kleiner als 4 If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = AC ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = AC ; Punkt auf Hauptfeld setzen Next End If ElseIf AC = 4 Then ; Wenn Zeichenmodus gleich 4 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen ElseIf AC = 5 Then ; Wenn Zeichenmodus gleich 5 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen ElseIf AC = 6 Then ; Wenn Zeichenmodus gleich 6 B2%(MouseX() ,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 3) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 3) = 1 ; Punkt auf Hauptfeld setzen End If End If If MouseHit(2) Then ; Wenn Maus wurde gedrückt If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = 0 ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = 0 ; Punkt auf Hauptfeld löschen Next End If End If If LA% = 1 Then ; Wenn Linie aktiv Color 125,125,125 ; Setze Farbe auf Grau Line XX,YY,MouseX(),MouseY() ; Zeichne Linie End If If P = 1 Then UpdateCells() ; Wenn Abspielen Aktiv Dann Aktualisiere die Felder If KeyHit(25) Then UpdateCells() ; Wenn P Gedrückt Aktualisiere die Felder If KeyHit(46) Then ClearCells() ; Wenn C Gedrückt Lösche die Felder If KeyHit(28) Then ; Wenn Enter Gedrückt If P = 0 Then ; Wenn Abspielen nicht Aktiv P = 1 ; Abspielen Aktiv ElseIf P = 1 Then ; Wenn Abspielen Aktiv P = 0 ;Abspielen nicht Aktiv End If End If If KeyHit(31) Then SF = WriteFile("ww.wws") For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 0 Then WriteByte SF, 0 If B2%(NX%,NY%) = 1 Then WriteByte SF, 1 If B2%(NX%,NY%) = 2 Then WriteByte SF, 2 If B2%(NX%,NY%) = 3 Then WriteByte SF, 3 Next Next CloseFile SF End If If KeyHit(38) Then LF = ReadFile("ww.wws") For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If ReadByte(LF) = 0 Then B2%(NX%,NY%) = 0 If ReadByte(LF) = 1 Then B2%(NX%,NY%) = 1 If ReadByte(LF) = 2 Then B2%(NX%,NY%) = 2 If ReadByte(LF) = 3 Then B2%(NX%,NY%) = 3 Next Next CloseFile LF End If DrawCells() ; Zeichne Zellen Color 255,255,255 ; Farbe aus Weiß setzen ;Kreuz Zeichnen : Line MouseX() - 1,MouseY(),MouseX() + 1,MouseY() Line MouseX(),MouseY() - 1,MouseX(),MouseY() + 1 Rect 1,1,10,10,0 ; Viereck Zeichnen Select AC Case 1 ; Wenn Zeichenmodus gleich 1 Color 255,255,0 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 2 ; Wenn Zeichenmodus gleich 2 Color 255,0,0 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 3 ; Wenn Zeichenmodus gleich 3 Color 0,0,255 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 4 ; Wenn Zeichenmodus gleich 4 Color 255,255,0 ; Farbe wechseln Plot 3,3 ; Punkt zeichnen Plot 4,3 ; Punkt zeichnen Plot 4,4 ; Punkt zeichnen Plot 4,5 ; Punkt zeichnen Plot 3,5 ; Punkt zeichnen Case 5 ; Wenn Zeichenmodus gleich 5 Color 255,255,0 ; Farbe wechseln Plot 3,3 ; Punkt zeichnen Plot 4,3 ; Punkt zeichnen Plot 3,4 ; Punkt zeichnen Plot 4,5 ; Punkt zeichnen Plot 3,5 ; Punkt zeichnen Case 6 ; Wenn Zeichenmodus gleich 6 Color 255,255,0 ; Farbe wechseln Line 3,3,5,3 ; Linie zeichnen Line 3,4,5,4 ; Linie zeichnen Line 3,5,5,5 ; Linie zeichnen Line 3,6,4,6 ; Linie zeichnen End Select Flip ; Wechsle den Buffer Until KeyHit(1) ; slange ESC nicht gedrückt End ; Programm Beenden Function DrawCells() ; Zellen Zeichnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 1 Then WritePixel NX%,NY%,GELB ; Wenn Feld an Position NX und NY gleich 1 dann Setze Punkt an Position NX und NY If B2%(NX%,NY%) = 2 Then WritePixel NX%,NY%,ROT ; Wenn Feld an Position NX und NY gleich 2 dann Setze Punkt an Position NX und NY If B2%(NX%,NY%) = 3 Then WritePixel NX%,NY%,BLAU ; Wenn Feld an Position NX und NY gleich 3 dann setze Punkt an Position NX und NY Next Next End Function Function ClearCells() ; Lösche Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu FensterHöhe B2%(NX%,NY%) = 0 ; Feld an Position NX und NY gleich 0 Next Next End Function Function UpdateCells() ; Aktuallisiere Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe B%(NX%,NY%) = B2%(NX%,NY%) ; Grundfeld an Position NX und NY gleich Hauptfeld an Position NX und NY B2%(NX%,NY%) = 0 ; Hauptfeld an Position NX und NY gleich 0 Next Next For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe NZ% = 0 ; Benachbarte Leiterbahnen NZZ% = 0 ; Benachbarte Elektronenenden NZZZ% = 0 ; Benachbarte Elektronenköpfe If B%(NX%,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links Unten = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts Oben = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX%,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 Select B%(NX%,NY%) Case 1 ; Wenn Feld an Position NX und NY = 1 If NZZZ% = 1 Or NZZZ% = 2 Then ; Wenn Benachbarte Elektronenköpfe gleich 1 oder 2 B2%(NX%,NY%) = 3 ; Feld an Position NX und NY = 3 Else ; Ansonsten B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 End If Case 2 ; Wenn Feld an Position NX und NY = 2 B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 Case 3 ; Wenn Feld an Position NX und NY = 3 B2%(NX%,NY%) = 2 ; Feld an Position NX und NY = 2 End Select Next Next End Function |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum das speichern/laden nicht richtig geht, liegt an folgendem:
Speichern: Code: [AUSKLAPPEN] If KeyHit(31) Then
SF = WriteFile("ww.wws") For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 0 Then WriteByte SF, 0 If B2%(NX%,NY%) = 1 Then WriteByte SF, 1 If B2%(NX%,NY%) = 2 Then WriteByte SF, 2 If B2%(NX%,NY%) = 3 Then WriteByte SF, 3 Next Next CloseFile SF End If Laden: Code: [AUSKLAPPEN] If KeyHit(38) Then
LF = ReadFile("ww.wws") For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If ReadByte(LF) = 0 Then B2%(NX%,NY%) = 0 If ReadByte(LF) = 1 Then B2%(NX%,NY%) = 1 If ReadByte(LF) = 2 Then B2%(NX%,NY%) = 2 If ReadByte(LF) = 3 Then B2%(NX%,NY%) = 3 Next Next CloseFile LF End If Nach jeden ql:ReadByte wird die Leseposition der Daten um ein Byte verschoben, somit kommst du nicht mehr an weitere Informationen an. Mach stattdessen für beide folgendes: Code: [AUSKLAPPEN] If KeyHit(31) Then
SF = WriteFile("ww.wws") For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe WriteByte SF,B2%(NX%,NY%) Next Next CloseFile SF End If If KeyHit(38) Then LF = ReadFile("ww.wws") For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe B2%(NX%,NY%)=ReadByte(LF) Next Next CloseFile LF End If Ansonsten gefällt mir dein Programm gut. Ich würde aber solche Programme lieber als Fenster ablaufen lassen. Damit man es dann noch steuern kann, würde ich es manuell vergrößern. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mal versuchsweise den Code beim Laden so umgeschrieben:
Code: [AUSKLAPPEN] ReBy = ReadByte(LF)
Wahrscheinlich ist "If ReadByte(LF) = 0 ..." so direkt nicht einsetzbar, jedenfalls gehts wie oben beschrieben ausgezeichnet.
If ReBy = 0 Then B2%(NX%,NY%) = 0 If ReBy = 1 Then B2%(NX%,NY%) = 1 If ReBy = 2 Then B2%(NX%,NY%) = 2 If ReBy = 3 Then B2%(NX%,NY%) = 3 |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jede Ausführung von ReadByte, versetzt die Leseposition um eine Stelle. Dadurch kann man nicht darauf hoffen, mehrmals mit ReadByte den richtigen zu erwischen. Blitz kann nicht wissen, wann es dann die Position versetzen soll oder nicht? Wenn man es mit If-Abfragen machen möchte/muß, so muß der Wert halt zwischengespeichert werden oder die Fileposition immer jeweils mit SeekFile gesetzt werden. Beide ''Lösungen'' kommen aber ohne einer weiteren Variable nicht umrum. Auch sind bei dieser Ausführung Probleme schon vorprogrammiert. Ich kann nur empfehlen Werte einfach direkt da rein zu schreiben, und so auch wieder auszulesen. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
F |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke. Hätt ich eigentlich selber draufkommen müssen ^^' .
Hier der Code mit Funktionierender Laden\Speichern Funktion : Code: [AUSKLAPPEN] Const SIZEX = 320 ; Fensterbreite Const SIZEY = 240 ; Fensterhöhe Graphics SIZEX ,SIZEY,32 ; Fenster öffnen SetBuffer BackBuffer() ; Buffer setzen Dim B%(SIZEX + 1,SIZEY + 1) ;Grundfeld Definiren Dim B2%(SIZEX + 1,SIZEY + 1) ;Hauptfeld Definiren LA% = 0 ; Linie nicht aktiv AC = 1 ; Zeichenmodus auf 1 setzen P = 0 ; Nicht Abspielen Const GELB = 1*$1000000 + 255*$10000 + 255*$100 + 0 ; Gelbwert ausrechnen Const ROT = 1*$1000000 + 255*$10000 + 0*$100 + 0 ; Rotwert ausrechnen Const BLAU = 1*$1000000 + 0*$10000 + 0*$100 + 255 ; Blauwert ausrechnen ClearCells() ; Zellen Löschen ;HAUPTPROGRAMM Repeat ; Wiederhole Cls ; Buffer löschen If KeyHit(2) Then AC = 1 ; Zeichenmodus auf 1 Setzen If KeyHit(3) Then AC = 2 ; Zeichenmodus auf 2 Setzen If KeyHit(4) Then AC = 3 ; Zeichenmodus auf 3 Setzen If KeyHit(5) Then AC = 4 ; Zeichenmodus auf 4 Setzen If KeyHit(6) Then AC = 5 ; Zeichenmodus auf 5 Setzen If KeyHit(7) Then AC = 6 ; Zeichenmodus auf 6 Setzen If KeyHit(200) Then MoveMouse MouseX(), MouseY() - 1 ; Zeichenmodus auf 1 Setzen If KeyHit(208) Then MoveMouse MouseX(), MouseY() + 1 ; Zeichenmodus auf 2 Setzen If KeyHit(203) Then MoveMouse MouseX() - 1, MouseY() ; Zeichenmodus auf 3 Setzen If KeyHit(205) Then MoveMouse MouseX() + 1, MouseY() ; Zeichenmodus auf 4 Setzen If MouseHit(1) Then ; Wenn Maus gedrückt If AC < 4 Then ; Wenn Zeichenmodus kleiner als 4 If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = AC ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = AC ; Punkt auf Hauptfeld setzen Next End If ElseIf AC = 4 Then ; Wenn Zeichenmodus gleich 4 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen ElseIf AC = 5 Then ; Wenn Zeichenmodus gleich 5 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen ElseIf AC = 6 Then ; Wenn Zeichenmodus gleich 6 B2%(MouseX() ,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 3) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 3) = 1 ; Punkt auf Hauptfeld setzen End If End If If MouseHit(2) Then ; Wenn Maus wurde gedrückt If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = 0 ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = 0 ; Punkt auf Hauptfeld löschen Next End If End If If LA% = 1 Then ; Wenn Linie aktiv Color 125,125,125 ; Setze Farbe auf Grau Line XX,YY,MouseX(),MouseY() ; Zeichne Linie End If If P = 1 Then UpdateCells() ; Wenn Abspielen Aktiv Dann Aktualisiere die Felder If KeyHit(25) Then UpdateCells() ; Wenn P Gedrückt Aktualisiere die Felder If KeyHit(46) Then ClearCells() ; Wenn C Gedrückt Lösche die Felder If KeyHit(28) Then ; Wenn Enter Gedrückt If P = 0 Then ; Wenn Abspielen nicht Aktiv P = 1 ; Abspielen Aktiv ElseIf P = 1 Then ; Wenn Abspielen Aktiv P = 0 ;Abspielen nicht Aktiv End If End If If KeyHit(31) Then SF = WriteFile("ww.wws") ; Datei zum Schreiben Öffnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 0 Then WriteByte SF, 0 ; Wenn Hauptfeld an der Position NX und NY gleich 0 schreibe 0 If B2%(NX%,NY%) = 1 Then WriteByte SF, 1 ; Wenn Hauptfeld an der Position NX und NY gleich 1 schreibe 1 If B2%(NX%,NY%) = 2 Then WriteByte SF, 2 ; Wenn Hauptfeld an der Position NX und NY gleich 2 schreibe 2 If B2%(NX%,NY%) = 3 Then WriteByte SF, 3 ; Wenn Hauptfeld an der Position NX und NY gleich 3 schreibe 3 Next Next CloseFile SF ; Datei steam schließen End If If KeyHit(38) Then LF = ReadFile("ww.wws") ; Datei zum Lesen Öffnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe RebY = ReadByte(LF) ; Byte auslesen If ReBy = 0 Then B2%(NX%,NY%) = 0 ; Wenn gelesenes Byte = 0 Hauptfeld an der Position NX und NY gleich 0 If ReBy = 1 Then B2%(NX%,NY%) = 1 ; Wenn gelesenes Byte = 1 Hauptfeld an der Position NX und NY gleich 1 If ReBy = 2 Then B2%(NX%,NY%) = 2 ; Wenn gelesenes Byte = 2 Hauptfeld an der Position NX und NY gleich 2 If ReBy = 3 Then B2%(NX%,NY%) = 3 ; Wenn gelesenes Byte = 3 Hauptfeld an der Position NX und NY gleich 3 Next Next CloseFile LF ; Datei steam schließen End If DrawCells() ; Zeichne Zellen Color 255,255,255 ; Farbe aus Weiß setzen ;Kreuz Zeichnen : Line MouseX() - 1,MouseY(),MouseX() + 1,MouseY() Line MouseX(),MouseY() - 1,MouseX(),MouseY() + 1 Rect 1,1,10,10,0 ; Viereck Zeichnen Select AC Case 1 ; Wenn Zeichenmodus gleich 1 Color 255,255,0 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 2 ; Wenn Zeichenmodus gleich 2 Color 255,0,0 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 3 ; Wenn Zeichenmodus gleich 3 Color 0,0,255 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 4 ; Wenn Zeichenmodus gleich 4 Color 255,255,0 ; Farbe wechseln Plot 3,3 ; Punkt zeichnen Plot 4,3 ; Punkt zeichnen Plot 4,4 ; Punkt zeichnen Plot 4,5 ; Punkt zeichnen Plot 3,5 ; Punkt zeichnen Case 5 ; Wenn Zeichenmodus gleich 5 Color 255,255,0 ; Farbe wechseln Plot 3,3 ; Punkt zeichnen Plot 4,3 ; Punkt zeichnen Plot 3,4 ; Punkt zeichnen Plot 4,5 ; Punkt zeichnen Plot 3,5 ; Punkt zeichnen Case 6 ; Wenn Zeichenmodus gleich 6 Color 255,255,0 ; Farbe wechseln Line 3,3,5,3 ; Linie zeichnen Line 3,4,5,4 ; Linie zeichnen Line 3,5,5,5 ; Linie zeichnen Line 3,6,4,6 ; Linie zeichnen End Select Flip ; Wechsle den Buffer Until KeyHit(1) ; slange ESC nicht gedrückt End ; Programm Beenden Function DrawCells() ; Zellen Zeichnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 1 Then WritePixel NX%,NY%,GELB ; Wenn Feld an Position NX und NY gleich 1 dann Setze Punkt an Position NX und NY If B2%(NX%,NY%) = 2 Then WritePixel NX%,NY%,ROT ; Wenn Feld an Position NX und NY gleich 2 dann Setze Punkt an Position NX und NY If B2%(NX%,NY%) = 3 Then WritePixel NX%,NY%,BLAU ; Wenn Feld an Position NX und NY gleich 3 dann setze Punkt an Position NX und NY Next Next End Function Function ClearCells() ; Lösche Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu FensterHöhe B2%(NX%,NY%) = 0 ; Feld an Position NX und NY gleich 0 Next Next End Function Function UpdateCells() ; Aktuallisiere Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe B%(NX%,NY%) = B2%(NX%,NY%) ; Grundfeld an Position NX und NY gleich Hauptfeld an Position NX und NY B2%(NX%,NY%) = 0 ; Hauptfeld an Position NX und NY gleich 0 Next Next For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe NZ% = 0 ; Benachbarte Leiterbahnen NZZ% = 0 ; Benachbarte Elektronenenden NZZZ% = 0 ; Benachbarte Elektronenköpfe If B%(NX%,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links Unten = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts Oben = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX%,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 Select B%(NX%,NY%) Case 1 ; Wenn Feld an Position NX und NY = 1 If NZZZ% = 1 Or NZZZ% = 2 Then ; Wenn Benachbarte Elektronenköpfe gleich 1 oder 2 B2%(NX%,NY%) = 3 ; Feld an Position NX und NY = 3 Else ; Ansonsten B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 End If Case 2 ; Wenn Feld an Position NX und NY = 2 B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 Case 3 ; Wenn Feld an Position NX und NY = 3 B2%(NX%,NY%) = 2 ; Feld an Position NX und NY = 2 End Select Next Next End Function |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast mich jetzt verführt, soetwas auch zu programmieren =)
Code: [AUSKLAPPEN] Graphics 800,600,32,2
SetBuffer BackBuffer() size=128 Dim feld(size,size) Dim feld2(size,size) Dim feld3(size,size) ;0 frei ;1 Leiter ;2 Elektronenanfang ;3 Elektronenende posx=0 posy=0 wid=20 selected=1 .start While Not KeyHit(1) Cls For x=2 To 5 If KeyHit(x) selected=x-2 EndIf Next posx=posx+KeyHit(205)-KeyHit(203) posy=posy+KeyHit(208)-KeyHit(200) smin=posx smax=GraphicsWidth()/wid+smin sminy=posy smaxy=GraphicsHeight()/wid+sminy For x=smin To smax For y=sminy To smaxy f=feld(x,y) sx=x*wid-posx*wid sy=y*wid-posy*wid If sx>=-wid And sx<GraphicsWidth() And sy>=-wid And sy<GraphicsHeight() Select f Case 0 Color 0,0,0 Case 1 Color 255,255,0 Case 2 Color 0,0,255 Case 3 Color 255,0,0 End Select If f Then Rect sx,sy,wid-1,wid-1 EndIf Next Next If MouseDown(1) px=(MouseX())/wid+posx py=(MouseY())/wid+posy feld(px,py)=selected EndIf If KeyHit(28) For x=0 To size For y=0 To size feld3(x,y)=feld(x,y) Next Next FlushMouse FlushKeys Goto emulate EndIf Flip 0 If KeyHit(57) Then RuntimeError "STOP!" Delay 10 Wend End .emulate While Not KeyHit(1) Cls For x=0 To size For y=0 To size If feld(x,y)=0 feld2(x,y)=0 ElseIf feld(x,y)=1 count=0 For x2=x-1 To x+1 For y2=y-1 To y+1 If Not(x2=x And y2=y) And x2>=0 And y2>=0 And x2<size And y2<size If feld(x2,y2)=2 Then count=count+1 EndIf Next Next If count>0 And count<3 feld2(x,y)=2 Else feld2(x,y)=1 EndIf ElseIf feld(x,y)=2 feld2(x,y)=3 ElseIf feld(x,y)=3 feld2(x,y)=1 EndIf Next Next For x=0 To size For y=0 To size feld(x,y)=feld2(x,y) Next Next smin=posx smax=GraphicsWidth()/wid+smin sminy=posy smaxy=GraphicsHeight()/wid+sminy For x=smin To smax For y=sminy To smaxy f=feld(x,y) sx=x*wid-posx*wid sy=y*wid-posy*wid If sx>=-wid And sx<GraphicsWidth() And sy>=-wid And sy<GraphicsHeight() Select f Case 0 Color 0,0,0 Case 1 Color 255,255,0 Case 2 Color 0,0,255 Case 3 Color 255,0,0 End Select If f Then Rect sx,sy,wid-1,wid-1 EndIf Next Next Flip 0 If MouseHit(1) For x=0 To size For y=0 To size feld(x,y)=feld3(x,y) Next Next FlushKeys Goto start EndIf Delay 250 Wend end 1=keine Leitung 2=Leitung 3=Elektron 4=Elektronenende Enter=Abspielen Esc=Beenden Im Abspielmodus: Mausklick=Zurück zum Aufbaumodus |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Marek |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, hab da auf der Seite http://www.quinapalus.com/wi-index.html diesen Wireworld Computer-Simulator gefunden (soll angeblich Primzahlen berechnen^^) und da es ihn nur für MacOS oder Linux gab, hab ich F's Programm etwas modifiziert und den Screenshot, den es auf der Seite zu downloaden gab, in ein Savegame verwandelt ![]() Einfach bb-Programm + Savegame in einen Ordner tuen, Programm ausführen, L drücken, Enter drücken und Spaß haben ![]() Hier das Savegame:https://www.blitzforum.de/upload/file.php?id=2142 Und hier das etwas modifizierte Programm: Code: [AUSKLAPPEN] Const SIZEX = 800 ; Fensterbreite
Const SIZEY = 600 ; Fensterhöhe Graphics SIZEX ,SIZEY,32,2 ; Fenster öffnen SetBuffer BackBuffer() ; Buffer setzen Dim B%(SIZEX + 1,SIZEY + 1) ;Grundfeld Definiren Dim B2%(SIZEX + 1,SIZEY + 1) ;Hauptfeld Definiren LA% = 0 ; Linie nicht aktiv AC = 1 ; Zeichenmodus auf 1 setzen P = 0 ; Nicht Abspielen Const GELB = 1*$1000000 + 255*$10000 + 255*$100 + 0 ; Gelbwert ausrechnen Const ROT = 1*$1000000 + 255*$10000 + 0*$100 + 0 ; Rotwert ausrechnen Const BLAU = 1*$1000000 + 0*$10000 + 0*$100 + 255 ; Blauwert ausrechnen ClearCells() ; Zellen Löschen ;HAUPTPROGRAMM timer=CreateTimer(60) Repeat ; Wiederhole Cls ; Buffer löschen LockBuffer(BackBuffer()) If KeyHit(2) Then AC = 1 ; Zeichenmodus auf 1 Setzen If KeyHit(3) Then AC = 2 ; Zeichenmodus auf 2 Setzen If KeyHit(4) Then AC = 3 ; Zeichenmodus auf 3 Setzen If KeyHit(5) Then AC = 4 ; Zeichenmodus auf 4 Setzen If KeyHit(6) Then AC = 5 ; Zeichenmodus auf 5 Setzen If KeyHit(7) Then AC = 6 ; Zeichenmodus auf 6 Setzen If KeyHit(200) Then MoveMouse MouseX(), MouseY() - 1 ; Zeichenmodus auf 1 Setzen If KeyHit(208) Then MoveMouse MouseX(), MouseY() + 1 ; Zeichenmodus auf 2 Setzen If KeyHit(203) Then MoveMouse MouseX() - 1, MouseY() ; Zeichenmodus auf 3 Setzen If KeyHit(205) Then MoveMouse MouseX() + 1, MouseY() ; Zeichenmodus auf 4 Setzen If MouseHit(1) Then ; Wenn Maus gedrückt If AC < 4 Then ; Wenn Zeichenmodus kleiner als 4 If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = AC ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = AC ; Punkt auf Hauptfeld setzen Next End If ElseIf AC = 4 Then ; Wenn Zeichenmodus gleich 4 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen ElseIf AC = 5 Then ; Wenn Zeichenmodus gleich 5 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen ElseIf AC = 6 Then ; Wenn Zeichenmodus gleich 6 B2%(MouseX() ,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 3) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 3) = 1 ; Punkt auf Hauptfeld setzen End If End If If MouseHit(2) Then ; Wenn Maus wurde gedrückt If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = 0 ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = 0 ; Punkt auf Hauptfeld löschen Next End If End If If LA% = 1 Then ; Wenn Linie aktiv Color 125,125,125 ; Setze Farbe auf Grau Line XX,YY,MouseX(),MouseY() ; Zeichne Linie End If If P = 1 Then UpdateCells() ; Wenn Abspielen Aktiv Dann Aktualisiere die Felder If KeyHit(25) Then UpdateCells() ; Wenn P Gedrückt Aktualisiere die Felder If KeyHit(46) Then ClearCells() ; Wenn C Gedrückt Lösche die Felder If KeyHit(28) Then ; Wenn Enter Gedrückt If P = 0 Then ; Wenn Abspielen nicht Aktiv P = 1 ; Abspielen Aktiv ElseIf P = 1 Then ; Wenn Abspielen Aktiv P = 0 ;Abspielen nicht Aktiv End If End If If KeyHit(31) Then SF = WriteFile("ww.wws") ; Datei zum Schreiben Öffnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 0 Then WriteByte SF, 0 ; Wenn Hauptfeld an der Position NX und NY gleich 0 schreibe 0 If B2%(NX%,NY%) = 1 Then WriteByte SF, 1 ; Wenn Hauptfeld an der Position NX und NY gleich 1 schreibe 1 If B2%(NX%,NY%) = 2 Then WriteByte SF, 2 ; Wenn Hauptfeld an der Position NX und NY gleich 2 schreibe 2 If B2%(NX%,NY%) = 3 Then WriteByte SF, 3 ; Wenn Hauptfeld an der Position NX und NY gleich 3 schreibe 3 Next Next CloseFile SF ; Datei steam schließen End If If KeyHit(38) Then LF = ReadFile("ww.wws") ; Datei zum Lesen Öffnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe RebY = ReadByte(LF) ; Byte auslesen If ReBy = 0 Then B2%(NX%,NY%) = 0 ; Wenn gelesenes Byte = 0 Hauptfeld an der Position NX und NY gleich 0 If ReBy = 1 Then B2%(NX%,NY%) = 1 ; Wenn gelesenes Byte = 1 Hauptfeld an der Position NX und NY gleich 1 If ReBy = 2 Then B2%(NX%,NY%) = 2 ; Wenn gelesenes Byte = 2 Hauptfeld an der Position NX und NY gleich 2 If ReBy = 3 Then B2%(NX%,NY%) = 3 ; Wenn gelesenes Byte = 3 Hauptfeld an der Position NX und NY gleich 3 Next Next CloseFile LF ; Datei steam schließen End If DrawCells() ; Zeichne Zellen Color 255,255,255 ; Farbe aus Weiß setzen ;Kreuz Zeichnen : Line MouseX() - 1,MouseY(),MouseX() + 1,MouseY() Line MouseX(),MouseY() - 1,MouseX(),MouseY() + 1 Rect 1,1,10,10,0 ; Viereck Zeichnen Select AC Case 1 ; Wenn Zeichenmodus gleich 1 Color 255,255,0 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 2 ; Wenn Zeichenmodus gleich 2 Color 255,0,0 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 3 ; Wenn Zeichenmodus gleich 3 Color 0,0,255 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 4 ; Wenn Zeichenmodus gleich 4 Color 255,255,0 ; Farbe wechseln Plot 3,3 ; Punkt zeichnen Plot 4,3 ; Punkt zeichnen Plot 4,4 ; Punkt zeichnen Plot 4,5 ; Punkt zeichnen Plot 3,5 ; Punkt zeichnen Case 5 ; Wenn Zeichenmodus gleich 5 Color 255,255,0 ; Farbe wechseln Plot 3,3 ; Punkt zeichnen Plot 4,3 ; Punkt zeichnen Plot 3,4 ; Punkt zeichnen Plot 4,5 ; Punkt zeichnen Plot 3,5 ; Punkt zeichnen Case 6 ; Wenn Zeichenmodus gleich 6 Color 255,255,0 ; Farbe wechseln Line 3,3,5,3 ; Linie zeichnen Line 3,4,5,4 ; Linie zeichnen Line 3,5,5,5 ; Linie zeichnen Line 3,6,4,6 ; Linie zeichnen End Select UnlockBuffer(BackBuffer()) Flip 0; Wechsle den Buffer WaitTimer(timer) Until KeyHit(1) ; slange ESC nicht gedrückt End ; Programm Beenden Function DrawCells() ; Zellen Zeichnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 1 Then WritePixel NX%,NY%,GELB ; Wenn Feld an Position NX und NY gleich 1 dann Setze Punkt an Position NX und NY If B2%(NX%,NY%) = 2 Then WritePixel NX%,NY%,ROT ; Wenn Feld an Position NX und NY gleich 2 dann Setze Punkt an Position NX und NY If B2%(NX%,NY%) = 3 Then WritePixel NX%,NY%,BLAU ; Wenn Feld an Position NX und NY gleich 3 dann setze Punkt an Position NX und NY Next Next End Function Function ClearCells() ; Lösche Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu FensterHöhe B2%(NX%,NY%) = 0 ; Feld an Position NX und NY gleich 0 Next Next End Function Function UpdateCells() ; Aktuallisiere Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe B%(NX%,NY%) = B2%(NX%,NY%) ; Grundfeld an Position NX und NY gleich Hauptfeld an Position NX und NY B2%(NX%,NY%) = 0 ; Hauptfeld an Position NX und NY gleich 0 Next Next For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe NZ% = 0 ; Benachbarte Leiterbahnen NZZ% = 0 ; Benachbarte Elektronenenden NZZZ% = 0 ; Benachbarte Elektronenköpfe If B%(NX%,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links Unten = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts Oben = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX%,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 Select B%(NX%,NY%) Case 1 ; Wenn Feld an Position NX und NY = 1 If NZZZ% = 1 Or NZZZ% = 2 Then ; Wenn Benachbarte Elektronenköpfe gleich 1 oder 2 B2%(NX%,NY%) = 3 ; Feld an Position NX und NY = 3 Else ; Ansonsten B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 End If Case 2 ; Wenn Feld an Position NX und NY = 2 B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 Case 3 ; Wenn Feld an Position NX und NY = 3 B2%(NX%,NY%) = 2 ; Feld an Position NX und NY = 2 End Select Next Next End Function |
||
Wer lesen kann ist klar im Vorteil... |
![]() |
F |
![]() Antworten mit Zitat ![]() |
---|---|---|
Soweit ich weiß hast du die Größenvariablen am anfang verändert, oder? ![]() Ich habe 2 neue Funktionen eingebaut : Der Simulator springt jetzt wieder in der Ausganszustand zurück wenn man die Simulation beendet. Das kann man übrigens mit (U)nterbinden. Wenn man T drückt rechnet der Simulator 50 schritte weiter, bei dem Primzahlenrechner sehr nützlich. ![]() Code: [AUSKLAPPEN] Const SIZEX = 320 ; Fensterbreite Const SIZEY = 240 ; Fensterhöhe Graphics SIZEX ,SIZEY,32 ; Fenster öffnen SetBuffer BackBuffer() ; Buffer setzen Dim B%(SIZEX + 1,SIZEY + 1) ;Grundfeld Definiren Dim B2%(SIZEX + 1,SIZEY + 1) ;Hauptfeld Definiren Dim B3%(SIZEX + 1,SIZEY + 1) ;Nebenfeld Definiren LA% = 0 ; Linie nicht aktiv AC = 1 ; Zeichenmodus auf 1 setzen P = 0 ; Nicht Abspielen Const GELB = 1*$1000000 + 255*$10000 + 255*$100 + 0 ; Gelbwert ausrechnen Const ROT = 1*$1000000 + 255*$10000 + 0*$100 + 0 ; Rotwert ausrechnen Const BLAU = 1*$1000000 + 0*$10000 + 0*$100 + 255 ; Blauwert ausrechnen ClearCells() ; Zellen Löschen ;HAUPTPROGRAMM timer=CreateTimer(60) Repeat ; Wiederhole Cls ; Buffer löschen LockBuffer(BackBuffer()) If KeyHit(2) Then AC = 1 ; Zeichenmodus auf 1 Setzen If KeyHit(3) Then AC = 2 ; Zeichenmodus auf 2 Setzen If KeyHit(4) Then AC = 3 ; Zeichenmodus auf 3 Setzen If KeyHit(5) Then AC = 4 ; Zeichenmodus auf 4 Setzen If KeyHit(6) Then AC = 5 ; Zeichenmodus auf 5 Setzen If KeyHit(7) Then AC = 6 ; Zeichenmodus auf 6 Setzen If KeyHit(200) Then MoveMouse MouseX(), MouseY() - 1 ; Zeichenmodus auf 1 Setzen If KeyHit(208) Then MoveMouse MouseX(), MouseY() + 1 ; Zeichenmodus auf 2 Setzen If KeyHit(203) Then MoveMouse MouseX() - 1, MouseY() ; Zeichenmodus auf 3 Setzen If KeyHit(205) Then MoveMouse MouseX() + 1, MouseY() ; Zeichenmodus auf 4 Setzen If MouseHit(1) Then ; Wenn Maus gedrückt If AC < 4 Then ; Wenn Zeichenmodus kleiner als 4 If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = AC ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = AC ; Punkt auf Hauptfeld setzen Next End If ElseIf AC = 4 Then ; Wenn Zeichenmodus gleich 4 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen ElseIf AC = 5 Then ; Wenn Zeichenmodus gleich 5 B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX(),MouseY() - 1) = 1 ; Punkt auf Hauptfeld setzen ElseIf AC = 6 Then ; Wenn Zeichenmodus gleich 6 B2%(MouseX() ,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY()) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY() + 1) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 2,MouseY() + 2) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() ,MouseY() + 3) = 1 ; Punkt auf Hauptfeld setzen B2%(MouseX() + 1,MouseY() + 3) = 1 ; Punkt auf Hauptfeld setzen End If End If If MouseHit(2) Then ; Wenn Maus wurde gedrückt If LA% = 0 Then ; Wenn Maus noch nicht gedrückt LA% = 1 ; Maus wurde gedrückt ; Linien Startpunkt setzen XX = MouseX() YY = MouseY() ElseIf LA% = 1 Then ; Wenn Maus wurde gedrückt LA% = 0 ; Maus wurde nicht gedrückt Winkel#=(ATan2(YY - MouseY(),XX - MouseX())) Mod 360 ; Linien Winkel berechnen hyp# = Sqr((XX - MouseX())^2 + (YY - MouseY())^2) ; Länge der Linie( Hypothenuse ) X# = XX Y# = YY B2%(Int(X),Int(Y)) = 0 ; Punkt setzen For N = 1 To hyp# ; Von 1 zur Länge der Linie ( Hypothenuse ) ; Punktkoordinaten Bewegen : X = X - Cos(Winkel#) Y = Y - Sin(Winkel#) B2%(Int(X),Int(Y)) = 0 ; Punkt auf Hauptfeld löschen Next End If End If If LA% = 1 Then ; Wenn Linie aktiv Color 125,125,125 ; Setze Farbe auf Grau Line XX,YY,MouseX(),MouseY() ; Zeichne Linie End If If P = 1 Then UpdateCells() ; Wenn Abspielen Aktiv Dann Aktualisiere die Felder If KeyHit(25) Then UpdateCells() ; Wenn P Gedrückt Aktualisiere die Felder If KeyHit(46) Then ClearCells() ; Wenn C Gedrückt Lösche die Felder If KeyHit(28) Then ; Wenn Enter Gedrückt If P = 0 Then ; Wenn Abspielen nicht Aktiv P = 1 ; Abspielen Aktiv For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe B3%(NX%,NY%) = B2%(NX%,NY%) ; Nebenfeld an Position NX und NY gleich Hauptfeld an Position NX und NY Next Next ElseIf P = 1 Then ; Wenn Abspielen Aktiv P = 0 ;Abspielen nicht Aktiv For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe B2%(NX%,NY%) = B3%(NX%,NY%) ; Hauptfeld an Position NX und NY gleich Nebenfeld an Position NX und NY B3%(NX%,NY%) = 0 ; Nebenfeld an Position NX und NY gleich 0 Next Next End If If KeyHit(22) Then P = 0 End If If KeyHit(31) Then SF = WriteFile("ww.wws") ; Datei zum Schreiben Öffnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 0 Then WriteByte SF, 0 ; Wenn Hauptfeld an der Position NX und NY gleich 0 schreibe 0 If B2%(NX%,NY%) = 1 Then WriteByte SF, 1 ; Wenn Hauptfeld an der Position NX und NY gleich 1 schreibe 1 If B2%(NX%,NY%) = 2 Then WriteByte SF, 2 ; Wenn Hauptfeld an der Position NX und NY gleich 2 schreibe 2 If B2%(NX%,NY%) = 3 Then WriteByte SF, 3 ; Wenn Hauptfeld an der Position NX und NY gleich 3 schreibe 3 Next Next CloseFile SF ; Datei steam schließen End If If KeyHit(38) Then LF = ReadFile("ww.wws") ; Datei zum Lesen Öffnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe RebY = ReadByte(LF) ; Byte auslesen If ReBy = 0 Then B2%(NX%,NY%) = 0 ; Wenn gelesenes Byte = 0 Hauptfeld an der Position NX und NY gleich 0 If ReBy = 1 Then B2%(NX%,NY%) = 1 ; Wenn gelesenes Byte = 1 Hauptfeld an der Position NX und NY gleich 1 If ReBy = 2 Then B2%(NX%,NY%) = 2 ; Wenn gelesenes Byte = 2 Hauptfeld an der Position NX und NY gleich 2 If ReBy = 3 Then B2%(NX%,NY%) = 3 ; Wenn gelesenes Byte = 3 Hauptfeld an der Position NX und NY gleich 3 Next Next CloseFile LF ; Datei steam schließen End If If KeyHit(20) Then ; Wenn T Gedrückt For N = 1 To 50 ; von 1 zu 50 UpdateCells() ; Aktualisiere Zellen Next FlushKeys ; Lösche Tastendrücke End If DrawCells() ; Zeichne Zellen Color 255,255,255 ; Farbe aus Weiß setzen ;Kreuz Zeichnen : Line MouseX() - 1,MouseY(),MouseX() + 1,MouseY() Line MouseX(),MouseY() - 1,MouseX(),MouseY() + 1 Rect 1,1,10,10,0 ; Viereck Zeichnen Select AC Case 1 ; Wenn Zeichenmodus gleich 1 Color 255,255,0 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 2 ; Wenn Zeichenmodus gleich 2 Color 255,0,0 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 3 ; Wenn Zeichenmodus gleich 3 Color 0,0,255 ; Farbe wechseln Rect 3,3,6,6,1 ; Viereck Zeichnen Case 4 ; Wenn Zeichenmodus gleich 4 Color 255,255,0 ; Farbe wechseln Plot 3,3 ; Punkt zeichnen Plot 4,3 ; Punkt zeichnen Plot 4,4 ; Punkt zeichnen Plot 4,5 ; Punkt zeichnen Plot 3,5 ; Punkt zeichnen Case 5 ; Wenn Zeichenmodus gleich 5 Color 255,255,0 ; Farbe wechseln Plot 3,3 ; Punkt zeichnen Plot 4,3 ; Punkt zeichnen Plot 3,4 ; Punkt zeichnen Plot 4,5 ; Punkt zeichnen Plot 3,5 ; Punkt zeichnen Case 6 ; Wenn Zeichenmodus gleich 6 Color 255,255,0 ; Farbe wechseln Line 3,3,5,3 ; Linie zeichnen Line 3,4,5,4 ; Linie zeichnen Line 3,5,5,5 ; Linie zeichnen Line 3,6,4,6 ; Linie zeichnen End Select UnlockBuffer(BackBuffer()) Flip 0; Wechsle den Buffer WaitTimer(timer) Until KeyHit(1) ; slange ESC nicht gedrückt End ; Programm Beenden Function DrawCells() ; Zellen Zeichnen For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe If B2%(NX%,NY%) = 1 Then WritePixel NX%,NY%,GELB ; Wenn Feld an Position NX und NY gleich 1 dann Setze Punkt an Position NX und NY If B2%(NX%,NY%) = 2 Then WritePixel NX%,NY%,ROT ; Wenn Feld an Position NX und NY gleich 2 dann Setze Punkt an Position NX und NY If B2%(NX%,NY%) = 3 Then WritePixel NX%,NY%,BLAU ; Wenn Feld an Position NX und NY gleich 3 dann setze Punkt an Position NX und NY Next Next End Function Function ClearCells() ; Lösche Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu FensterHöhe B2%(NX%,NY%) = 0 ; Feld an Position NX und NY gleich 0 Next Next End Function Function UpdateCells() ; Aktuallisiere Felder For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe B%(NX%,NY%) = B2%(NX%,NY%) ; Grundfeld an Position NX und NY gleich Hauptfeld an Position NX und NY B2%(NX%,NY%) = 0 ; Hauptfeld an Position NX und NY gleich 0 Next Next For NX% = 1 To SIZEX ; Von 1 zu Fensterbreite For NY% = 1 To SIZEY ; Von 1 zu Fensterhöhe NZ% = 0 ; Benachbarte Leiterbahnen NZZ% = 0 ; Benachbarte Elektronenenden NZZZ% = 0 ; Benachbarte Elektronenköpfe If B%(NX%,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Oben Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links = 1 Dann Ben. Leit. + 1 If B%(NX% - 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Links Unten = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% + 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Unten Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY%) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts = 1 Dann Ben. Leit. + 1 If B%(NX% + 1,NY% - 1) = 1 Then NZ% = NZ% + 1 ; Wenn Feld Rechts Oben = 1 Dann Ben. Leit. + 1 If B%(NX%,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% - 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% + 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY%) = 2 Then NZZ% = NZZ% + 1 If B%(NX% + 1,NY% - 1) = 2 Then NZZ% = NZZ% + 1 If B%(NX%,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% - 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX%,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% + 1) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY%) = 3 Then NZZZ% = NZZZ% + 1 If B%(NX% + 1,NY% - 1) = 3 Then NZZZ% = NZZZ% + 1 Select B%(NX%,NY%) Case 1 ; Wenn Feld an Position NX und NY = 1 If NZZZ% = 1 Or NZZZ% = 2 Then ; Wenn Benachbarte Elektronenköpfe gleich 1 oder 2 B2%(NX%,NY%) = 3 ; Feld an Position NX und NY = 3 Else ; Ansonsten B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 End If Case 2 ; Wenn Feld an Position NX und NY = 2 B2%(NX%,NY%) = 1 ; Feld an Position NX und NY = 1 Case 3 ; Wenn Feld an Position NX und NY = 3 B2%(NX%,NY%) = 2 ; Feld an Position NX und NY = 2 End Select Next Next End Function |
||
Marek |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zuerst hatte ich nur das gemacht, ja. Allerdings war das Programm dann soooo langsam, dass ich zusätzlich nuch etwas Speed-Optimierung vornehmen musste^^ Sonst wäre es einfach unvorzeigbar gewesen(wegen der Größe) ![]() Achja, mal so nebenbei: Hab das Programm über Nacht laufen lassen um herauszufinden, ob das Programm überhaupt irgendwas macht. Nun ja, funktionieren tut es wohl... leider hat es aber nur 2 Primzahlen während der Nacht berechnet... die 21 und die 23^^ |
||
Wer lesen kann ist klar im Vorteil... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group