Frage für die berechnungen bei meiner Map
Übersicht

bruce85Betreff: Frage für die berechnungen bei meiner Map |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Abend zusammen,
ich habe ne frage zu meinem Code und zwar bin ich gerade dabei ein Soduko Spiel zu schreiben. Hier mal der Code: Code: [AUSKLAPPEN] Graphics 1024,768,16,2
SetBuffer BackBuffer() Global tile = LoadImage("tile.png") Global tile_pos = LoadImage("tile_pos.png") ;Spielfeld erstellen Dim Spielfeld(8,8) ;Aktuelle Map setzen Restore data_map For y=0 To 8 For x=0 To 8 Read Spielfeld(x,y) Next Next Global Feld_x,Feld_y,maus_x,maus_y Repeat Cls For y=0 To 8 For x=0 To 8 map = Spielfeld(x,y) If map = 0 Then ;Die berechnungen wo die map gezeichnet werden soll If x < 3 And y < 3 Then Rect x*32+50,y*32+50,32,32,0 : maus_x=50 : maus_y=50 If x > 2 And x < 6 And y < 3 Then Rect x*32+55,y*32+50,32,32,0 : maus_x=55 : maus_y=50 If x > 5 And y < 3 Then Rect x*32+60,y*32+50,32,32,0 : maus_x=60 : maus_y=50 If x < 3 And y > 2 And y < 6 Then Rect x*32+50,y*32+55,32,32,0 maus_x=50 : maus_y=55 If x > 2 And x < 6 And y > 2 And y < 6 Then Rect x*32+55,y*32+55,32,32,0 :maus_x=55 : maus_y=55 If x > 5 And y > 2 And y < 6 Then Rect x*32+60,y*32+55,32,32,0 : maus_x=60 :maus_y=55 If x < 3 And y > 5 Then Rect x*32+50,y*32+60,32,32,0 : maus_x=50 : maus_y=60 If x > 2 And x < 6 And y > 5 Then Rect x*32+55,y*32+60,32,32,0 : maus_x=55 maus_y=60 If x > 5 And y > 5 Then Rect x*32+60,y*32+60,32,32,0 : maus_x=60 : maus_y=60 EndIf Next Next ;Feldposition berechnen If ((MouseX()-maus_x)/32) < 9 And ((MouseX()-maus_x)/32) >= 0 Then Feld_x = ((MouseX()-maus_x)/32) If ((MouseY()-maus_y)/32) < 9 And ((MouseY()-maus_y)/32) >= 0 Then Feld_y = ((MouseY()-maus_y)/32) ;Feld Position anzeigen Text 20,20,"Feld X: "+Feld_x Text 20,35,"Feld Y: "+Feld_y ;Feldposition anzeigen wo die maus gerade drauf ist Rect Feld_x*32+maus_x,Feld_y*32+maus_y,32,32,1 Flip Until KeyHit(1) End .data_map Data 0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0 also da wo ich die map zeichne in der For schleife, habe ich viele berechnungen machen müssen dass ich auf dieses ergebniss gekommen bin. Wenn ich jetzt mit der Maus über ein Feld gehe, dann wird das nicht korrekt in das feld gezeichnet. Und jetzt wollte ich nochmal fragen ob es eine andere möglichkeit gibt die Map so zu zeichnen ohne so lange berechnungen? Vielen Dank schonmal für die Hilfen ![]() MFG Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es ist noch früh und ich hab den ersten Kaffee noch nicht getrunken, aber meintest Du sowas:
Code: [AUSKLAPPEN] Graphics 640,480,0,2
SetBuffer (BackBuffer()) While Not KeyHit(1) For x = 0 To 9 For y = 0 To 9 Color (x + y) * 5 , (x + y) , (x + y ) * 10 Rect x*32,y*32,32,32,1 Color 255,0,0 Text (x)*32,y*32, x + y * 10 Next Next RectX = (MouseX()/32) RectY = (MouseY()/32) Color 0,255,0 Rect RectX*32,RectY*32,32,32,0 Color 255,255,0 Text 32,352, RectX+RectY * 10 Flip:Cls Wend |
||
Play Satyr! |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke dir Hase,
das kann ich ja auch, ich will aber das immer nach dem Dritten Feld eine kleine lücke ist, soll also Feld X und Feld Y jeweils nach dem Dritten Feld eine lücke drin sein. Nur weiss ich jetzt nicht wie ich das mit'nem kleinem Code lösen kann und dass die Feldposition auch richtig gezeichnet wird. MFG Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 640,480,0,2
SetBuffer (BackBuffer()) While Not KeyHit(1) For x = 0 To 8 For y = 0 To 8 Color (x + y) * 5 , (x + y) , (x + y ) * 10 Rect x*32+((x/3)*5),y*32+((y/3)*5),32,32,1 Color 255,0,0 Text (x)*32+((x/3)*5),y*32+((y/3)*5), x + y * 10 If MouseX()>=x*32+((x/3)*5) And MouseX()<x*32+((x/3)*5)+32 Then If MouseY()>=y*32+((y/3)*5) And MouseY()<y*32+((y/3)*5)+32 Then rectx= x : recty=y Color 0,255,0 Rect RectX*32+((rectx/3)*5),RectY*32+((recty/3)*5),32,32,0 EndIf EndIf Next Next Color 255,255,0 Text 32,352, RectX+RectY * 10 Flip:Cls Wend Ist nur ein bissl Mathe.... Ausnahmsweise mal ein bisserl Code. Der Trick ist es zu Schauen wie oft sich deine Koordinaten durch 3 Teilen lassen und das als basis für ein bissel aufaddiererei zu nehmen. EDIT: kleiner Fehler bereinigt und die Koordinatenabfrage in die Schleife integriert. Es gibt keinen besseren Zeitpunkt um abzufragen ob die Maus über etwas ist als in dem Moment da es gezeichnet wird, denn da stehen die Koords ja fest ![]() |
||
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 |
- Zuletzt bearbeitet von BladeRunner am So, Nov 26, 2006 12:34, insgesamt einmal bearbeitet
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke BladeRunner.
Dadrauf wäre ich net gekommen das /3*5 zu berechnen, es funktioniert aber sehr gut. Vielen Dank. Gruss Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group