Maus Prüfen bei Raute

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Schnuff

Betreff: Maus Prüfen bei Raute

BeitragDo, Jan 05, 2006 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe ein Image geladen:
user posted image
(für ein Spiel, ähnlich Wie Anno)
und möchte jetz Prüfen ob die Maus über der Mitleren Raute ist
(hier in weiß)
user posted image

wie Mache ich dass jetzt am Besten?

Hagbard

BeitragDo, Jan 05, 2006 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist für dich die mittlere Raute? Oder meinst du die Raute in der Mitte des Bildes?

Du könntest das machen, indem du das Spielfeld ohne die Rauten zeichnest und die dann später darüberzeichnen.

Dabei wäre es, glaube ich, wichtig, dass du immer nur das zeichnest was der Spieler gerade sieht, damit nicht zuviel Last anfällt.

mfg
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 20:40, insgesamt einmal bearbeitet

theotheoderich

BeitragDo, Jan 05, 2006 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Guckst Du hier, das ist die Lösung für all Deine Probleme Very Happy

http://www.djs4life.de/Iso-Tut/Teil1.htm
Gruß
TheoTheoderich
--
The box label said, "Requires Windows XP or better.", so I bought an Amiga Computer.
 

Schnuff

BeitragDo, Jan 05, 2006 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, aber die Maus Abrage Funktioniert dort auch nicht Korekt Sad

5k41

BeitragDo, Jan 05, 2006 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
öhm sry wenn ich das jetzt vollkomen falsch interpretiere aber warum nicht so?
Code: [AUSKLAPPEN]

raute=loadimage("raute.bmp")
maskimage raute,0,0,0 ;oder denk dir sonst irgendne farbe aus die du ausblenden lässt

hauptschleife blabla

if imagescollide(maus,mousex(),mousey(),0,raute,rautex,rautey,0) then

    kA

endif
[/quote]
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

skey-z

BeitragFr, Jan 06, 2006 1:21
Antworten mit Zitat
Benutzer-Profile anzeigen
*sry, falscher gedankengang, wenn möglich bitte löschen*
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 06, 2006 2:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Schnuff, hier mal eine Gedankenstütze wie man es machen kann... Natürlich kann die Abfrage auf ein Tileset noch optimiert werden.Code: [AUSKLAPPEN]
Graphics 400,200,0,2
SetBuffer FrontBuffer()

While Not KeyHit(1)
 mx=MouseX()
 my=MouseY()

 If ((mx+100)/2+my+150)>300 Then
  If ((mx+200)/2+my+150)<550 Then
   If ((mx+100)/2-my+150)>100 Then
    If ((mx+200)/2-my+150)<350 Then
     Plot mx,my
    End If
   End If
  End If
 End If

Wend
End
 

Schnuff

BeitragFr, Jan 06, 2006 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
ich verstehe nicht ganz Embarassed
könntest du den Code bitte Dukomentiern?

5k41

BeitragFr, Jan 06, 2006 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
kopier dir den code doch einfach in dein BB und teste es ich wette dann kommst du von selbst drauf...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Doni

BeitragSa, Jan 07, 2006 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du die weiße Raute meinst is es doch ganz einfach,einfach imagescollide,dann musst du hablt noch deinen Mauszeiger als Immage machen,was aber nicht schwer is!

5k41

BeitragSa, Jan 07, 2006 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
psst...hab ich auch schon geschrieben...man wieso bemerkt mich eigentlich nie einer!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Kryan

BeitragSa, Jan 07, 2006 13:43
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich hab das mal bisschen anders gemacht....hat bei mir super schnell geklaappt
also wenn man die dinger zeichnet...dannn...ach was , schau dir das mal selbst an:
http://kryan.gpages.de/ISO.zip
zumindest habe ich es dort so gemacht:
Code: [AUSKLAPPEN]
 For y=1 To maxy
  For x=1 To maxx
   xpos=scx-(x*64)+(y*64)
   ypos=scy+(x*32)+(y*32)-Map(x,y,1)*32
   RGB=ReadPixel(mx,my)
   If InScreen(xpos+scx,ypos+scy,scx-sscx,scy-sscy) Then
   If mx>xpos And my>ypos+cory And mx<xpos+128 And my<ypos+128 And ((RGB Shr 16) And $FF)=0 And ((RGB Shr 8) And $FF)=0 And (RGB And $FF)=0 Then
    marform=Map(x,y,0)
    marx=xpos
    marx2=x
    mary=ypos
    mary2=y
    mardraw=1
   End If
   DrawImage ISOTile(Map(x,y,2),Map(x,y,0)),xpos,ypos
   End If
  Next
 Next


edit: achja, das war damals die zeit, als ich noch nicht den imagescollide befehl kannte
ist empfehlenswerter wahrscheinlich
nur so geht es auch schnell ^^

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jan 07, 2006 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem liegt doch daran das ausserhalb der Raute die gleiche Farbe ist! (obere Bild)
darum kannst du nicht (imagescollide/imageRectoverlab) nehmen, da es keine Maskcolor gibt!

einfache Lösung ist es ein zweites Image zu laden (untere Bild, gleiche Größe,2-farbig)

Nun kannst du das grüne malen und geprüft wird mit dem Pseudo Image, da bei dem Bild eine Maskcolor ist die nicht berücksichigt wird!

Ob diese Lösung bei dir möglich ist liegt am Rest deines Programms!
[BB2D | BB3D | BB+]
 

Schnuff

BeitragSa, Jan 07, 2006 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Kryans Code versuche ich im moment noch zu verstehen Embarassed
@hectic das Problem ist, ich weiß nicht wo ich deine Prüfraute einfügen sollte Very Happy


PS:@5k41, du wirst schon bemerkt Very Happy

Kryan

BeitragSa, Jan 07, 2006 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
   xpos=scx-(x*64)+(y*64)
   ypos=scy+(x*32)+(y*32)-Map(x,y,1)*32


also da wird die x-position und die y-position berechnet

also von normaler 2d-perspektive in iso-perspektive umgerechnet ^^

um alles nachfolgende zu verstehen musst du in die beiden for-schleifen waitkey einbauen

5k41

BeitragSa, Jan 07, 2006 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt man könnte einfach das bild von einer raute in schwarz weiss nehmen und unter das bild der normalen zeichenen...
Code: [AUSKLAPPEN]

kollision=loadimage("schwarzweissraute.bmp")
farbe=loadimage("farbe.bmp")

maskimage kollision,0,0,0

repeat

drawimage kollision
drawimage farbe

if imagescollide(kollision,x,y,0,spieler,x,y,0) then kA

endif



so ungefähr...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Kryan

BeitragSa, Jan 07, 2006 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
weiß nich, ob das die perfekte lösung ist Wink
naja, bestimmt hast du dir schon meinen kleinen editor angeschaut
die einzelnen schwarz-weiß formen hab ich im ordner "Form"
und mit der Funktion LoadISOTiles macht man aus den formen hübsche bilder Very Happy

5k41

BeitragSa, Jan 07, 2006 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wollt auch nur eine einfache schnell zu verstehende und vielleicht ein biscchen langsame lösung schreiben ich mein hey wir sind hier immer noch in der beginners corner und für den beginn reicht das^^
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Kryan

BeitragSa, Jan 07, 2006 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab ja nich gleich gesagt, dass das schlecht ist ^^
is sogar einfacher zu verstehen Wink
aber ich bin trotzdem fanatischer anhänger meiner lösung Very Happy
 

Schnuff

BeitragSa, Jan 07, 2006 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
@5k41
für eine Kollision muss man die Schartzwieß Raute garnicht zeichnen Very Happy
aber ich glaube ich schaff das irgntwie
@Kryan
dein Editor Stottert und die Maus hakt am Rand aber das mcht ja nichts Very Happy

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group