schiffeversenken problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

sen-me

Betreff: schiffeversenken problem

BeitragMo, Sep 05, 2005 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich habn problem mit dem bilder setzen, ich habs bisher so gemacht
BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,32,1
image=LoadAnimImage(\"tile.bmp\",16,16,0,8)
SetBuffer BackBuffer()
SeedRnd MilliSecs()
Dim spieler(15,15),pc(15,15)
For y=0 To 15
For x=0 To 15
spieler(x,y)=4
pc(x,y)=4
Next
Next
MoveMouse(48,112)
Color 255,0,0
bootsetzen=1
While Not KeyHit(1)
Cls
For y=0 To 15
For x=0 To 15
DrawImage image,48+x*16,112+y*16,spieler(x,y)
DrawImage image,336+x*16,112+y*16,pc(x,y)
Next
Next
If MouseX()<48
MoveMouse(48,MouseY())
EndIf
If MouseX()>303
MoveMouse(303,MouseY())
EndIf
If MouseY()<112
MoveMouse(MouseX(),112)
EndIf
If MouseY()>367
MoveMouse(MouseX(),367)
EndIf
mx=MouseX()
my=MouseY()
If bootsetzen=0
Line mx-5,my,mx+5,my
Line mx,my-5,mx,my+5
Else
DrawImage image,mx-8,my-8,5
If rechtsrum=1
DrawImage image,mx+8,my-8,5
Else
DrawImage image,mx-8,my+8,5
EndIf
If MouseX()>=48 And MouseX()<=63 And MouseY()>=112 And MouseY()<=127
If spieler(0,0)=4 And spieler(1,0)=4 And spieler(0,1)=4
spieler(0,0)=6
If rechtsrum=1
spieler(0,1)=4
spieler(1,0)=6
Else
spieler(0,1)=6
spieler(1,0)=4
EndIf
EndIf
Else
If spieler(0,0)=6 Or spieler(1,0)=6 Or spieler(0,1)=6
spieler(0,0)=4
spieler(1,0)=4
spieler(0,1)=4
EndIf
EndIf
EndIf
If MouseHit(1)
If MouseX()>=48 And MouseX()<=63 And MouseY()>=112 And MouseY()<=127 And spieler(0,0)=6
spieler(0,0)=5
If rechtsrum=1
spieler(1,0)=5
Else
spieler(0,1)=5
EndIf
ElseIf MouseX()>=48 And MouseX()<=63 And MouseY()>=112 And MouseY()<=127 And spieler(0,0)=5
spieler(0,0)=4
spieler(1,0)=4
spieler(0,1)=4
EndIf
EndIf
If MouseHit(2) And bootsetzen=1
If rechtsrum=1
rechtsrum=0
Else
rechtsrum=1
EndIf
EndIf
Flip
Wend
FreeImage image
End


image=user posted image

es klappt ja bisher alles gut (nunja, für die koordiante (linke seite) 0,0, ist ja noch nicht weiter gemacht)
blos wenn ich dies jetzt ausführe
und ich klick auf dem feld 0,0 (erstes feld ganz oben links)
mit rechts, ohne den muaszeiger raus zu tun, dan ändert sich zwar die aufstellung der grauen kästchen, aber das grüne bleibt so, aber jetzt kommts noch schlimmer, wenn du dann auf linke maustaste drückst, setzt er das schiff, blos wenn du dann den mauszeiger raus tust, verschwinden beide...
ich weis auch warum, aber wie soll ichs beheben
BlitzBasic: [AUSKLAPPEN]
   ;...
If spieler(0,0)=6 Or spieler(1,0)=6 Or spieler(0,1)=6
spieler(0,0)=4
spieler(1,0)=4
spieler(0,1)=4
EndIf
;...

hier, da aber 1ne bedingung erfüllt wird (1 kästchen war ja grün geblieben)
ändert er alle 3 auf 4, und somit wurde nix gestezt..
aber wenn ich hier jetzt and and schreiben würde (was bestimmt jetzt manche sagen wollten)
dann wirds nicht klappen, da dan alle 3 grüns ein müsten, aber es sind imme rnur 2 grün...
 

Omenaton_2

BeitragMi, Sep 07, 2005 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne alles richtig durchzulesen ein Vorschlag zu dem Ende:

Schreib nicht alle 3 Spieler in einer zeile mit OR getrennt, sondern einzeln.
(If Spieler(0,0) = 6 Then)
Dann kannst du innerhalb dieser IF-Bedingung gezielt alles so ändern wie du willst, wenn nötig kannst du noch tiefer verschachtelt If Thens einfügen.

Manchmal (nur manchmal!) ist es besser den Code etwas länger zu schreiben, nicht zu vereinfacht, damit es nicht zu komplex wird. Manchmal ist es sogar akzeptabel, den Code nicht optimal, nicht zu kompakt zu schreiben, nur um mehr Übersichtlichkeit zu erreichen.
 

sen-me

BeitragMi, Sep 07, 2005 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ok thx
wenn das game fertig ist werd ichd ann zwar über 20.000 zeilen haben aber egal
(alle berechnungen um die schiffe, das man es dort nicht stezen darf, dan pc zuvall schiff setzten, und zwar das die schiffe nicht verstezt werden -.- ...)
 

Gerhard

BeitragDo, Sep 08, 2005 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Trick beim Programmieren ist, den Computer arbeiten zu lassen.
Wenn du 20.000 Zeilen für dein Schiffeversenken brauchst, hat der Computer dich arbeiten lassen. Smile

Bevor du alle Möglichkeiten ins Programm tippst, solltest du überlegen, ob du nicht mit Schleifen (die du ja schon anwendest: for ... next usw.) ohne soviel Tipparbeit klarkommst.

5k41

BeitragMo, Okt 10, 2005 9:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Würde mich auch mal genauer mit Funktionen befassen...glaube wenn du eine Funktion richtig dynamisch machst kann die das für alle schiffe testen und du musst imma nur

prueffunktion(schiff) oder so schreiben!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group