Problem mit Mausbegrenzung
Übersicht

![]() |
BlitzproggerBetreff: Problem mit Mausbegrenzung |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo erstmal
mein problem: ich habe mich nun mit isometrischen karten auseinandergesetzund auch schon einen einfachen editor erstellt, ich habe es so gemacht dass man wenn man die maustasten drückt auf der karte herumscrollen kann. wenn ich nun ein bisschen nach unten rechts scrolle kome ich zu einem punkt an dem meine maus "steckenbleibt" hier mal die scrollfunktion: Code: [AUSKLAPPEN] For y=0 To 29
und für die ganz mutigen den (fast) ganzen code
For x=0 To 19 tx = x *80 + minx ty = y *40 + miny DrawImage tile(tiles(x*2,y*2)), tx, ty If y < 29 And x < 19 Then DrawImage tile(tiles(x*2+1,y*2+1)), tx+40, ty+20 Next Next If KeyDown(208) Then miny = miny + 1 If KeyDown(200) Then miny = miny - 1 If KeyDown(203) Then minx = minx - 1 If KeyDown(205) Then minx = minx + 1 DrawImage maus,xx*40+40+minx,yy*20+20+miny Code: [AUSKLAPPEN] Graphics 800,600,0,1
(klar ist er unübersichtlich, verbesserungswürdig und unausgereift, desshalb beachtet bitte dass ich erst seit "kurzem" programmiere)
Color 0,0,0 SetBuffer BackBuffer() Dim tile(7) tile(0)=LoadImage("raute.bmp") tile(1)=LoadImage("raute2.bmp") Dim geb(4) geb(0)=LoadImage("rauteg.bmp") geb(1)=LoadImage("rauteg2.bmp") Dim tiles(59,59) Dim gehen(59,59) Dim gebs(59,59) aus = 1 aus2 = 1 maus = LoadImage("mausiso.bmp") hinter = LoadImage("grash.bmp") While Not KeyDown(1) xx = MouseX()/40 yy = MouseY()/20 DrawBlock hinter,0,0 For y=0 To 29 For x=0 To 19 tx = x *80 + minx ty = y *40 + miny DrawImage tile(tiles(x*2,y*2)), tx, ty If y < 29 And x < 19 Then DrawImage tile(tiles(x*2+1,y*2+1)), tx+40, ty+20 Next Next For y=0 To 29 For x=0 To 19 tx = x *80 + minx ty = y *40 + miny If tiles(x,y) = 1 Or tiles(xx,yy) = 2 Then If gebs(x,y) <> 3 And gebs(x,y) > 0 Then tiles(x,y) = 0 ElseIf gebs(x,y) = 3 Then tiles(x,y) = 4 EndIf DrawImage geb(gebs(x*2,y*2)), tx, ty-80 If y < 29 And x < 19 Then DrawImage geb(gebs(x*2+1,y*2+1)), tx+40, ty-60 Next Next If KeyDown(208) Then miny = miny + 1 If KeyDown(200) Then miny = miny - 1 If KeyDown(203) Then minx = minx - 1 If KeyDown(205) Then minx = minx + 1 If MouseDown(1) Then If wahl = 0 Then tiles(xx,yy) = aus If aus = 1 Then gehen(xx,yy) = 1 EndIf If wahl = 1 Then gebs(xx,yy) = aus2 EndIf EndIf If MouseDown(2) Then If wahl = 0 Then tiles(xx,yy) = 0 If wahl = 1 Then gebs(xx,yy) = 0 EndIf DrawImage maus,xx*40+40+minx,yy*20+20+miny Flip Cls Wend End edit/: ist mir noch nie passiert dass niemand antwortet. wisst ihr die lösung nicht? mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm.. ich weis nicht wie man etwas isometrisches macht ..
du kanst aba ne line die die 4 punkte verbinden machen und dan eine Collision abfrage ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
ohh nein, nicht das ist das problem. es geht darum das wenn ich scrolle das dann irgendwann die maus gegen eine "mauer" fährt und nicht mehr weiterkommt. dort hört mein latein einfach schon auf
edit: !! lest das!! ich habe das problem gelöst!!! ihr braucht eure antworten nicht mehr zu posten mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich nehme mal diese Mauer ist das Ende des Fensters in dem das Programm läuft. Du musst immer wenn die Maus einen Rand des Bildschirms erreicht hat, die Maus woanders hinsetzen.
mfg Moep |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
daran hab ich auch schon gedacht aber es hat einen anderen grund:
nach langer überlegung habe ich versucht die variable mit der die tiles verschoben werden nicht direkt bei der mauszeichnung mitzurechnen. wenn ich sie erst später bei der kollision einberechne funktioniert es. hier mein ganzer Code: [AUSKLAPPEN] Graphics 800,600,0,1
es sind keine antworten mehr vonnöten da das problem nun gelöst wurde
Color 0,0,0 SetBuffer BackBuffer() Dim tile(7) tile(0)=LoadImage("raute.bmp") tile(1)=LoadImage("raute2.bmp") tile(2)=LoadImage("raute3.bmp") tile(3)=LoadImage("raute4.bmp") tile(4)=LoadImage("raute5.bmp") tile(5)=LoadImage("raute6.bmp") tile(6)=LoadImage("raute7.bmp") tile(7)=LoadImage("raute8.bmp") Dim geb(4) geb(0)=LoadImage("rauteg.bmp") geb(1)=LoadImage("rauteg2.bmp") geb(2)=LoadImage("rauteg3.bmp") geb(3)=LoadImage("rauteg4.bmp") geb(4)=LoadImage("rauteg5.bmp") Dim tiles(59,59) Dim gehen(59,59) Dim gebs(59,59) aus = 1 aus2 = 1 maus = LoadImage("mausiso.bmp") hinter = LoadImage("grash.bmp") gesch# = 2 Global timer = CreateTimer (60) While Not KeyDown(1) xx = MouseX()/40 yy = MouseY()/20 mh = MouseDown(1) md = MouseDown(2) DrawBlock hinter,0,0 For y=0 To 29 For x=0 To 19 tx = x *80 + minx ty = y *40 + miny If tx > -120 And tx < 840 Then If ty > -40 And ty < 620 Then DrawImage tile(tiles(x*2,y*2)), tx, ty If y < 29 And x < 19 Then DrawImage tile(tiles(x*2+1,y*2+1)), tx+40, ty+20 EndIf Next Next For y=0 To 29 For x=0 To 19 tx = x *80 + minx ty = y *40 + miny If tiles(x,y) = 1 Or tiles(xx,yy) = 2 Then If gebs(x,y) <> 3 And gebs(x,y) > 0 Then tiles(x,y) = 0 ElseIf gebs(x,y) = 3 Then tiles(x,y) = 4 EndIf If tx > -120 And tx < 840 Then If ty > -40 And ty < 620 Then DrawImage geb(gebs(x*2,y*2)), tx, ty-80 If y < 29 And x < 19 Then DrawImage geb(gebs(x*2+1,y*2+1)), tx+40, ty-60 EndIf Next Next If gesch < 0.5 Then gesch = 0.5 If KeyDown(208) Then miny = miny - gesch If KeyDown(200) Then miny = miny + gesch If KeyDown(203) Then minx = minx + gesch If KeyDown(205) Then minx = minx - gesch If mh Then If wahl = 0 Then If xx - minx/40 < 60 And xx - minx/40 > -1 Then If yy - miny/20 < 60 And yy - miny/20 > -1 Then tiles(xx-minx/40,yy-miny/20) = aus EndIf If aus = 1 Then gehen(xx,yy) = 1 EndIf If wahl = 1 Then gebs(xx,yy) = aus2 EndIf EndIf If md Then If wahl = 0 Then tiles(xx,yy) = 0 If wahl = 1 Then gebs(xx,yy) = 0 EndIf If KeyHit(30) Then FlushKeys() Locate 0,0 If wahl = 0 Then aus = Input("auswahl ") If wahl = 1 Then aus2 = Input("auswahl ") EndIf If KeyHit(17) Then FlushKeys() Locate 0,0 If wahl = 0 Then gelaende = Input("Gelände = ") For gx = 0 To 59 For gy = 0 To 59 tiles(gx,gy) = gelaende Next Next ElseIf wahl = 1 Then gelaende2 = Input("Gelände = ") For gx = 0 To 59 For gy = 0 To 59 gebs(gx,gy) = gelaende2 Next Next EndIf EndIf If KeyHit(32) Then If wahl = 1 Then wahl = 0 ElseIf wahl = 0 Then wahl = 1 EndIf EndIf If KeyDown(2) Then gesch = gesch - 0.05 If KeyDown(3) Then gesch = gesch + 0.05 If KeyDown(57) Then Rect 0,500,800,100,1 DrawImage tile(aus),10,510 DrawImage tile(gelaende),10,550 DrawImage geb(aus2),90,490 DrawImage geb(gelaende2),170,490 Color 255,255,255 Text 250,510, "wahl: " + wahl Color 0,0,0 EndIf DrawImage maus,xx*40+40,yy*20+20;+miny WaitTimer timer Flip Cls Wend End mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group