Linie durch Mausklick?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

wellensittich

Betreff: Linie durch Mausklick?

BeitragSa, Jul 19, 2008 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo!
ich habe mich gerade erst angemeldet und schon das erste Problem^^:
Ich weis, das das wohl eineblöde/einfache Frage ist aber ich komm nicht auf die lösung!
also, ich möchte eine einfache linie zeichnen, indem ich per
linke maustaste die x1 und y1 koordinaten angebe,
und durch nochmaliges klicken auf die linke an einer anderen stelle (oder auch mit rechter maustatse wenn das einfacher ist) die x2 und y2 koordinaten.

ich habe so angefangen, dass ich diese koordinaten in einer variable speicher,
und danach in den befehl "line" einsetzte....so in etwa:

if mousclick(1) then
mousex = erste
mousey = zweite
........

und so weiter...aba ich denke mal das das schon der völlig falsche ansatz ist oder^^

ich hoffe auf eine baldige antwort xD
MFG wellensittich

PS: nur am rande erwähnt, ich beginne gerade erst mit blitz basic zu programmieren
also nicht zu streng sein^^ Laughing

Firstdeathmaker

BeitragSa, Jul 19, 2008 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, du brauchst dafür mehrere Variablen. Z.B. indem du:

pos1x, pos1y
pos2x, pos2y
toggle

nimmst. Dann machst du aus dem

Code: [AUSKLAPPEN]

if mousclick(1) then
mousex = erste
mousey = zweite
........



folgendes

Code: [AUSKLAPPEN]

if mousehit(1) then
 if toggle
  pos2x = mousex()
 pos2y = mousey()
 else
  pos1x = mousex()
 pos1y = mousey()
endif
toggle = not toggle
endif
 


Die Variable "toggle" wechselt bei jedem Mausklick zwischen 0 und 1 (durch die Zeile toggle = not toggle). Somit werden die beiden Zuweisungen immer abwechselnd aufgerufen.


Hab das jetzt extra mal so umständlich geschrieben weil du ja gesagt hast, du fängst gerade erst an. Zu empfehlen sind allerdings hierbei eher Arrays oder Types, mit Types könntest du für jede Linie die du zeichnen möchtest, die Anfangs und Endkoordinaten speichern.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
  • Zuletzt bearbeitet von Firstdeathmaker am Sa, Jul 19, 2008 18:08, insgesamt einmal bearbeitet

ZaP

BeitragSa, Jul 19, 2008 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Stilvoll wäre das wohl mit einem Array gelöst, aber so sollte es auch gehen:

Code: [AUSKLAPPEN]

local x1,x2,y1,y2

waitmouse()

x1 = mousex()
y1 = mousey()

waitmouse()

x2 = mousex()
y2 = mousey()

line x1,y1,x2,y2

waitmouse()
Starfare: Worklog, Website (download)

ToeB

BeitragSa, Jul 19, 2008 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Für ganz schlauen xD :


Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

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

Global MX,MY,MHIT=1
Dim TEMP(1,1)

Repeat
   mx = MouseX()
   my = MouseY()
   If MouseHit(1) Then
      TEMP(MHIT-1,0) = MX
      TEMP(MHIT-1,1) = MY
      MHIT = MHIT + 1
      If MHIT > 2 Then
         MHIT = 1
         l.l = New l
         l\x1 = TEMP(0,0)
         l\y1 = TEMP(0,1)
         l\x2 = TEMP(1,0)
         l\y2 = TEMP(1,1)
      EndIf
   EndIf
   Text 1,1,"X1 : "+TEMP(0,0)
   Text 1,15,"Y1 : "+TEMP(0,1)
   Text 1,30,"X2 : "+TEMP(1,0)
   Text 1,45,"Y2 : "+TEMP(1,1)
   Text 1,60,"HITS : "+MHIT
   For l.l = Each l
      Oval l\x1-2,l\y1-2,4,4
      Oval l\x2-2,l\y2-2,4,4
      Line l\x1,l\y1,l\x2,l\y2
   Next
   Flip
   Cls
Until KeyHit(1)
End


Du musst ihn jetzt nicht verstehn, aber wenn du mehrere Linien haben willst, ist das eine Lösung...

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Firstdeathmaker

BeitragSa, Jul 19, 2008 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe nicht weshalb du MHIT auf 1 setzt, anstatt es auf 0 zu lassen und das MHIT-1 zu entfernen...
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

ozzi789

Betreff: Hatte gerade zu viel Zeit :)

BeitragSa, Jul 19, 2008 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ein , meiner Meinung einfaches, Beispiel


Code: [AUSKLAPPEN]

Graphics 800,600,32,2 ;Standart Prozedur :)
SetBuffer BackBuffer()


Color 255,0,0  ; Die Farbe auf Rot setzten , der Optik wegen


While Not KeyHit(1) ;Schleife durchgehn bis ESC gedrückt wird

Cls ;Bildschrim löschen



If  MouseHit(1) ;Falls mausgedrüclt wird

If c=0          ; und dazu noch c(lick) = 0 ist
    posx=MouseX() ; Posx soll den Wert der Maus haben
    posy=MouseY() ; Posy soll den Wert der Maus haben
    c=1         ; c(lick) wird auf 1 gesetzt
EndIf   


If c=2          ; Falls c(lick) gleich 2 ist , noch nicht beachten
    posx2=MouseX() ; bekannt nur das es posx2 und posy2 sind
    posy2=MouseY()
    c=0         ; c(lick) wird auf 0 gesetzt
EndIf
EndIf



If c=1 Then c=2 ; Falls die Maus gedrückt wurde und c=1 ist (siehe oben) , soll c=2 sein (siehe oben)


Color 255,255,255 ;Farbe auf weis, für den Text
Text  0,20,"x"+posx+" y"+posy+" x2"+posx2+" y2"+posy2 ;Hier kanst du die Koordinaten der Punkte (die du geklickt hast) ansehn
Text  0,0,"c:"+c ; Hier den Wert von c
Color 255,0,0 ; Farbe auf Rot


Line posx,posy,posx2,posy2 ; Die Linie wird gezeichnet :)

If c=0 ; Nicht beachten ist nur das die akktuele Linie Rot ist und die andere weis :)
   Color 255,255,255
  Line posx2,posy2,MouseX(),MouseY()
   Color 255,0,0
Else
   Color 255,255,255
  Line posx,posy,MouseX(),MouseY()
   Color 255,0,0
EndIf


Flip 60 ;Flipen
Wend    ;Ende der Schleife
End     ;Ende !



Mfg ozzi Razz
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

wellensittich

BeitragSo, Jul 20, 2008 8:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke an alle Antworten!
Ich habs jetzt hingegrikt.

PS: ich will später ja mal ein eigenes spiel programmieren, vielleicht ein ego shooter^^,
nun würde ich gerne wissen, wie lange dauert es etwa bis man soweit ist dies zu können und wie lange dauert dann dass programmieren an sich?

MFG wellensittich

ozzi789

BeitragSo, Jul 20, 2008 10:30
Antworten mit Zitat
Benutzer-Profile anzeigen
wellensittich hat Folgendes geschrieben:
Danke an alle Antworten!
Ich habs jetzt hingegrikt.

PS: ich will später ja mal ein eigenes spiel programmieren, vielleicht ein ego shooter^^,
nun würde ich gerne wissen, wie lange dauert es etwa bis man soweit ist dies zu können und wie lange dauert dann dass programmieren an sich?

MFG wellensittich


Also falls du viel Motivation mit bringst und fleissig, erstmal kleine Sachen Codest, wirst du schon bald kleine Erfolge haben, vlt ein Spaceshooter oder Pong-Clone Smile

Einen Ego-Shooter alleiene zu programmieren ist sehr unwahrscheinlich, aber wenn du so weit bist, kannst du ja einen Grafiker suchen usw

Very Happy
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

ToeB

BeitragSo, Jul 20, 2008 12:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Ego shooter kann er ja ruhig probieren, heißt ja nicht, dass er nicht instande wäre, das nicht zu tun. Es muss ja kein CS-Clone sein, ein ego shooter kann auch ein shooter sein, wo man z.b. Dosen abschießt... Naja egal...

Für einen sehr einfach gehaltenen Ego-shooter kannst du villeicht (jenachdem, wie viel zeit du hast) in 1-3 Wochen schaffen...

Aber trotzdem würd ich dir raten, erst mit einfachen sachen anzufangen, damit man überhaubt die syntax und den Aufbau der Programme Lernt.

Dann viel erfolg !

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Firstdeathmaker

BeitragSo, Jul 20, 2008 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Wellensittich: Also wenn es was vernünftiges werden soll, dann muss man schonmal ein Jahr einrechnen. Aber kleinere Projekte (Egoshooter) bekommt man mit ein bisschen Übung auch innerhalb einer Woche hin.

Auf die Frage wie lange man braucht um alle Fähigkeiten dazu zu erlangen, kann ich keine konkrete Antwort geben. Das hängt maßgeblich von der Intelligenz ab Wink
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

ozzi789

BeitragSo, Jul 20, 2008 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wen du Fragen hast , mir sind ja da Razz
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group