auswahlrechteck

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Khayet

Betreff: auswahlrechteck

BeitragDi, Okt 09, 2007 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich brauch nochma eure Hilfe...
Also, ich will sone Art auswahlrechteck haben, wie man sie bei nahezu jedem echtzeit-strategie spiel hat (heißt nich, das ich age of empires4 proggen will Wink. Also wenn man die maus drückt und zieht, das dann ein Rechteck entsteht, und wieder verschwindet, wenn man aufhört die Maus zu drücken. Aber wie soll ich das machen?
Code: [AUSKLAPPEN]
If MouseDown(1) Then
  x = MouseX()
  y = MouseY()
 EndIf


so fängts sicherlich an^^ Aber wie gehts weiter?

mfg

Khayet
 

ChristianK

BeitragDi, Okt 09, 2007 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
heißt nich, das ich age of empires4 proggen will

Naja, ein Auswahlrechteck ist doch sozusagen das zentrale Spielelement von AoE. Smile

Du musst es in etwa so machen:

1. MouseHit überprüfen und die Koordinaten der Maus beim Klick in zwei Variablen speichern. Von da an wird das Rechteck gezeichnet.

2. Dann hast du 2 Koordinaten und das Rechteck ist eindeutig.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

mas93

BeitragDi, Okt 09, 2007 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe hier mal ein Ansatz für dich.
Es ist noch nicht genauso wie du es gerne haben möchtest, sondern:

1mal klick=start possition
nächsterklick=end possition.

Das is jetzt echt nix besonderes, sondern das soll einfach mal ne grundlage sein oderso, kp^^

Code: [AUSKLAPPEN]

Graphics 640,480,32,2
SetBuffer BackBuffer()

Type koords
   Field x1,y1,x2,y2
End Type

Repeat
   Text 20,20, start
   
   If MouseDown(1) Then start=start+1 gesamt=gesamt+1
   If Not MouseDown(1) Then start=0
   
   If start=1 Then
      k.koords=New koords
       k\x1=MouseX()
      k\y1=MouseY()
   EndIf
   If start=0 And gesamt>1 Then
      k.koords=Last koords
         k\x2=MouseX()
         k\y2=MouseY()
         
   EndIf
   
   For k.koords=Each koords
       Rect k\x1,k\y1,k\x2-k\x1,k\y2-k\y1
Next

   Flip
   Cls
Until KeyHit(1)
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Lobby

BeitragDi, Okt 09, 2007 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Was, ne Grundlage, und das mit Types(umständlicherweise)? Shocked

Wie wärs damit?:
Code: [AUSKLAPPEN]
Graphics 400,300,16,2
SetBuffer BackBuffer()

While not KeyHit(1)
cls

If MouseHit(1) Then
  amx=MouseX()
  amy=MouseY()
EndIf

If MouseDown(1) Then
  mx=MouseX()
  my=MouseY()
  Line amx-1,amy-1,mx-1,amy-1
  Line amx-1,amy-1,amx-1,my-1
  Line mx-1,my-1,mx-1,amy-1
  Line mx-1,my-1,amx-1,my-1
EndIf

Flip
Wend


Ich habe Line statt Rect benutzt, da Rect nur geht, wenn die 2.en Kordinaten größer als die Ersten sind Wink
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

BladeRunner

Moderator

BeitragMi, Okt 10, 2007 5:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()


Repeat
   mx=MouseX()
   my=MouseY()
   
   If MouseDown(1) Then
      If auswahl=0 Then
         auswahl = 1
         sx=mx
         sy=my
      EndIf
      If mx<sx Then
         If my<sy Then
            Rect mx,my,sx-mx,sy-my,0
         Else
            Rect mx,sy,sx-mx,my-sy,0
         EndIf
      Else
         If my<sy Then
            Rect sx,my,mx-sx,sy-my,0
         Else
            Rect sx,sy,mx-sx,my-sy,0
         EndIf
      EndIf
   Else
      auswahl = 0
   EndIf
   
   Text 0,0,mx+" "+my+" "+sx+" "+sy
   Flip
   Cls

Until KeyHit(1)

Mit rect, da dies wesentlich schneller als line ist, auf Mousehit verzichtet weil dies immer wieder übersehen wird und zu Pufferproblemen führt.
Viele Wege führen nach Rom...
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
 

Khayet

BeitragMi, Okt 10, 2007 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die ausführlichen Antworten Very Happy Es funktioniert^^

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group