[B2D] Turm von Hanoi - Knobelspiel
Übersicht

![]() |
SpionAtomBetreff: [B2D] Turm von Hanoi - Knobelspiel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kein Code-Archiv ohne dieses Spiel.
Versetze durch Anklicken der einzelnen Turmteile den kompletten Turm auf eine andere Stange. Dabei dürfen Turmteile nur auf größeren Turmteilen liegen. Rechtsklick oder Mausrad Drehen starten das Spiel neu. Code: [AUSKLAPPEN] ;von SpionAtom - begonnen Oktober 2oo8
;Kleine Fingerübung für Bildschirm-Auflösung-unabhängige Grafiken ;-------------------------------------------------------------------------------- ;Versetze durch Anklicken der einzelnen Turmteile den kompletten Turm auf eine ;andere Stange. Dabei dürfen Turmteile nur auf größeren Turmteilen liegen. ;Rechtsklick oder Mausrad Drehen starten das Spiel neu. ;Grafik-Setup Cls:Text 0,0,"Auflösung:":Rect 20,50,160,120,0:Text 20,50,"4:3" Rect 220,50,160,100,0:Text 220,50,"16:10":c=0:Repeat:If MouseHit(1) Then If MouseX()>20 And MouseY()>50 And MouseX()<180 And MouseY()<170 Then c=1 If MouseX()>220 And MouseY()>50 And MouseX()<380 And MouseY()<150 Then c=2 End If:Until c > 0:If c = 1 Then Restore vt Else Restore st .vt Data 320, 240, 640, 480, 800, 600, 1024, 768, 1280, 960, 1600, 1200 .st Data 320, 200, 640, 400, 800, 500, 1024, 640, 1280, 750, 1600, 1000 Cls:Text 0,0,"Auflösung:" Local gx[5],gy[5]:For i=0To 5:Read gx[i],gy[i]:Text 0,(i+1)*16,gx[i]+"x"+gy[i]:Next Repeat:c=MouseY()/16:Until c>0 And c <7 And MouseHit(1):xr=gx[c-1]:yr=gy[c-1] Cls:Text 0,0,"Modus:":Text 0,16,"Vollbild":Text 0,32,"Fenster (fest)":Text 0, 48,"Fenster (flexibel)" Repeat:screenmode=MouseY()/16:Until screenmode > 0 And screenmode < 4 And MouseHit(1): Graphics xr, yr, 0, screenmode Const MAXELEMENTE = 10 Dim stange(MAXELEMENTE, 2), picElement(MAXELEMENTE) AppTitle("Die Türme von Hanoi") fps_timer = CreateTimer(15) gw3 = xr / 3 gh = yr ;Stangenposition festlegen For i = 1 To 3: stange(0, i - 1) = (gw3) * i - (gw3 / 2): Next ;Elemente in Bilder speichern For i = 1 To MAXELEMENTE ph = yr / 48 pw = (xr / 32) * i picElement(i) = CreateImage(pw, ph) SetBuffer ImageBuffer(picElement(i)) Color 255, 255, 255 Oval 0, 0, ph, ph Oval pw - ph, 0, ph, ph Rect ph / 2, 0, pw - ph + 1, ph Color 0, 0, 0 For k = 1 To i Rect 2 + k * 4, 5, 3, 3 Next MidHandle picElement(i) Next SetBuffer BackBuffer() elemente = 3 .startGame ;Elemente auf erste Stange setzen For i = 1 To elemente stange(elemente + 1 - i, 0) = elemente - i + 1 stange(elemente + 1 - i, 1) = 0: stange(elemente + 1 - i, 2) = 0 Next FlushMouse(): phase = 0: zug = 0 Repeat ;Eingaben mf = Floor(MouseX() / (gw3 + 1)) mz = MouseZSpeed() elemente = elemente + mz If elemente < 3 Then elemente = 3 If elemente > MAXELEMENTE Then elemente = MAXELEMENTE ;Reset If MouseHit(2) Or mz <> 0 Then Goto startGame If MouseHit(1) Then FlushMouse() ;ausgewähltes Element auf die Stange setzen If phase = 1 Then p = elemente: While stange(p, mf) <> 0: p = p - 1: Wend zugGueltig = False If p = elemente Then zugGueltig = True If p < elemente Then If stange(p + 1, mf) > chosen Then zugGueltig = True If zugGueltig Then stange(p, mf) = chosen phase = 0 If mf <> vonstange Then zug = zug + 1 End If ;ein Element von der Stange nehmen ElseIf phase = 0 Then p = elemente If stange(p, mf) <> 0 Then While stange(p - 1, mf) > 0: p = p - 1: If p = 1 Then Exit Wend chosen = stange(p, mf) stange(p, mf) = 0 phase = 1 vonstange = mf End If End If End If Cls Color 25, 25, 25: Rect mf * gw3, 0, gw3, gh Color 50, 50, 50: Rect 0, gh - 70, xr, 70 For s = 0 To 2 Rect stange(0, s) - 5, yr - 70 - elemente * ph * 1.6, 10, elemente * ph * 1.6 For i = 1 To elemente If stange(i, s) > 0 Then DrawImage picElement(stange(i, s)), stange(0, s), yr - 80 - (elemente - i) * ph * 1.5 Next Next If phase = 1 Then DrawImage picElement(chosen), stange(0, mf), yr - 100 - (elemente + 1) * ph * 2 Color 0, 0, 0: Text 10, gh - 55, "Züge: " + zug Color 30, 30, 30: Text 10, gh - 35, "optimal: " + Int((2 ^ elemente) - 1) Flip() WaitTimer fps_timer Until KeyDown(1) End |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
- Zuletzt bearbeitet von SpionAtom am Do, Okt 30, 2008 16:23, insgesamt einmal bearbeitet
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Super Spiel. Ich habs mit 7 Zügen geschafft. | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Bildschirmauflösung 1280x1024 ist 5:4 und nicht 4:3 wie angegeben.
Die meisten Menschen haben mitlerweile 5:4, was einen normalen Flachbildschirm entspricht. Diese fehlt in der Auswahl. Sollte also mit rein genommen werden. Und es gibt auch noch ein 16:9 Format. Alles in allem: 5:4 - Die meisten Flachbildschirme 4:3 - Die alten CRT-Monitore 16:10 und 16:9 Seltener (kommen aber in ''Mode'' (leider)) meistens jedoch auf Notebooks |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
coole sache das... wir ham mal in info n löser für dieses zeug schreiben müssen... war ganz intressant... | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
jaja, das macht doch jeder mal in info...rekursives lösen von hanoi in 4 zeilen ![]() |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
Marek |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da is definitiv ein Fehler im Code... Es scheint so als gäbe es rechts noch eine 4. Stange... | ||
Wer lesen kann ist klar im Vorteil... |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ihr bemerkt aber auch jeden pixelgroßen Fehler. Hoffentlich ist es jetzt weg. | ||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group