Licht aus

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

$tankY

Betreff: Licht aus

BeitragDo, Dez 06, 2007 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab schnell ein "Lights out" Spiel programmiert.
Ziel ist es, alle Lichter aus zu machen. Jedoch gehen bei einem Klick die umliegenden Lichter ebenfalls aus bzw an.
Code: [AUSKLAPPEN]
Const feldGroesse = 64

Global breite = feldGroesse * 5
Global hoehe = feldGroesse * 5 + 40

Global textY = feldGroesse * 5 + 20

Dim spielFeld(4,4)
Global zuege = 0

Global level = 0

SeedRnd MilliSecs()

Graphics breite, hoehe, 0, 2
SetBuffer BackBuffer()

Repeat

   ende = steuerung()
   spielZeichnen()

Until ende = 1


Function steuerung()

   If KeyHit(1) Then
      Return 1
   EndIf
   
   If istSieg() Then
      neuesSpiel()
   EndIf
   
   If MouseHit(1) Then
      x = MouseX() / feldGroesse
      y = MouseY() / feldGroesse
      If x >= 0 And x <= 4 And y >= 0 And y <= 4 Then
         zuege = zuege + 1
         tauscheFeld(x,y)
      EndIf
   EndIf

End Function


Function spielZeichnen()

   Cls
   
   For y = 0 To 4
      For x = 0 To 4
         Oval x * feldGroesse, y * feldGroesse, feldGroesse, feldGroesse, spielFeld(x,y)
      Next
   Next
   
   Text 10, textY, "Benötigte Züge: " + zuege
   
   Flip

End Function


Function istSieg()

   an = 0
   
   For y = 0 To 4
      For x = 0 To 4
         an = an + spielFeld(x,y)
      Next
   Next

   If an = 0 Then
      Return 1
   Else
      Return 0
   EndIf

End Function


Function neuesSpiel()

   Dim spielFeld(4,4)
   level = level + 1
   zuege = 0
   
   For i = 0 To level
      tauscheFeld(Rand(0,4),Rand(0,4))
   Next

End Function

Function tauscheFeld(x,y)

   For y2 = -1 To 1
      For x2 = -1 To 1
         If (x2 And y2) = 0 And x+x2 >= 0 And x+x2 <= 4 And y+y2 >= 0 And y+y2 <= 4 Then
            spielFeld(x+x2,y+y2) = 1 - spielFeld(x+x2,y+y2)
         EndIf
      Next
   Next

End Function


Code ist ziemlich selbsterklärend, falls es Fragen gibt, einfach hier reinschreiben. Verbesserungsvorschläge sind natürlich auch erwünscht, schließlich soll man daraus lernen!

Foppele

BeitragDo, Dez 06, 2007 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Lustig. Erinnert mich ein wenig an Go. Smile

Dottakopf

BeitragFr, Dez 07, 2007 8:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahh ich bekomms nicht hin Laughing

mfg Dottakopf

SpionAtom

BeitragFr, Dez 07, 2007 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich bekomms schon hin. Hatte sowas auch mal im WiP vorgestellt.
http://thomasdecker1.googlepag...ndrehen.bb
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

$tankY

BeitragFr, Dez 07, 2007 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich net gesehn Embarassed hab aber auch nur nach Lights off bzw Licht aus gesucht, weil ich es unter dem Namen kenne Very Happy

SpionAtom

BeitragFr, Dez 07, 2007 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wusste noch nicht mal, dass es einen Namen hat.
Die Frage, dich mich bei dem Spiel am meisten beschäftigt, ist, ob sich jede Kombination von An/Aus-Feldern herstellen lässt, und wenn ja, wie. Konnt mir noch keiner beantworten. Vielleicht gibts auch einfach kein System. Confused
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

FireballFlame

BeitragFr, Dez 07, 2007 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hübsches Spiel!
Ich finds aber noch zu leicht ^^
Bei meinem ersten Versuch hab 2 Züge gebraucht, beim 2. Versuch einen, beim 3. 6 und beim 4. 5...
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit
 

$tankY

BeitragFr, Dez 07, 2007 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja gut, ähm, die Funktion neuesSpiel:
Code: [AUSKLAPPEN]

level = level + 1

For i = 0 To level
   tauscheFeld(Rand(0,4),Rand(0,4))
Next


sollte eigentlich pro level immer einmal mehr "mischen" Very Happy

@SpionAtom: versteh deine Frage net

SpionAtom

BeitragFr, Dez 07, 2007 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Angenommen du hast ein leeres 2x2 Feld:
00
00

Dann frage ich mich, ob es möglich ist bei diesem Spiel alle Kombinationen zu schalten, also
Code: [AUSKLAPPEN]

00  00  00  01  01  01  01  10         11
01, 10, 11, 00, 01, 10, 11, 00, ....., 11


Und das ganze halt auch für ein beliebiges N x N feld.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

BladeRunner

Moderator

BeitragFr, Dez 07, 2007 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
sollte theoretisch möglich sein, denke ich.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

SpionAtom

BeitragFr, Dez 07, 2007 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
sollte theoretisch möglich sein, denke ich.

Für diese Antwort muss ich dir Dank sagen -.- Rolling Eyes

user posted image

Diese Lösungen habe ich bereits herausgefunden, vielleicht erkennt ja jemand ein Muster darin. Bisher glaub ich zu wissen, dass jedes Feld maximal einmal angeklickt werden muss. Und dass die Lösung symmetrisch ist. Und dass die Lösung eindeutig ist (wenn man von den gedrehten Lösungen absieht)
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Silver_Knee

BeitragSa, Dez 08, 2007 0:07
Antworten mit Zitat
Benutzer-Profile anzeigen
das einzige muster das ich erkenn ist das das4*4 feld rechtsradikal ist xD
 

Gast

BeitragSa, Dez 08, 2007 10:47
Antworten mit Zitat
Und wenn ich manche Felder Anklicke, hab gehen ca. 5 neue aus, lassen sich aber nicht schließen Sad

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group