Problem mit Input()

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: Problem mit Input()

BeitragDi, März 30, 2010 11:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

wenn man bei meinem Spiel auf 'neues Spiel' klickt, dann kommt die Namenseingabe. Um den Namen aber eingeben zu können muss man die linke Maustaste drücken (egal auf welcher Position). Ich möchte aber, dass entweder die Namenseingabe sofort aktiviert ist, oder dass man auf eine bestimmte Position klicken muss.

ich geb euch ma den Code:

Code: [AUSKLAPPEN]

If(namenseingabe = 1) Then
   
   DrawImage namen, 0, 0
   
   DrawImage zurueck, 150, 600
   
   If(name$ < 1) Then
      
      DrawImage nichtweiter, 550, 600
      
   Else
      
      DrawImage weiter, 550, 600
      
   EndIf
   
   DrawImage mouse, MouseX(), MouseY()
   
   If(name$ > 1) Then
      
      Text 260, 375, "" + name$ + ""
      
   EndIf
   
   If ImagesOverlap(mouse, MouseX(), MouseY(), zurueck, 150, 600) Then
      
      DrawImage zurueck2, 150, 600
      
      DrawImage mouse, MouseX(), MouseY()
      
      Text 0, 0, "Zurück zum Hauptmenü"
      
      If MouseHit(1) Then
         
         menu = 1
         namenseingabe = 0
         
      EndIf
      
   ElseIf ((name$ > 1) And ImagesOverlap(mouse, MouseX(), MouseY(), weiter, 550, 600))
      
      DrawImage weiter2, 550, 600
      
      DrawImage mouse, MouseX(), MouseY()
      
      Text 0, 0, "Los geht's!"
      
      If MouseHit(1) Then
         
         ingame = 1
         namenseingabe = 0
         
      EndIf
      
   EndIf
   
   
   If MouseDown(1) Then ;MAKIERTMAKIERT
   
      Locate 260, 375
   
      name$ = Input("")
      
      DrawImage mouse, MouseX(), MouseY()
      
      CreateDir("USERDATA\" + name$ + "")
      CreateDir("USERDATA\" + name$ + "\save")
      
   EndIf   
   
EndIf


Das ist schon alles in der 'repeat - until' Schleife.

Wenn ich die Makierte Zeile (;MAKIERTMAKIERT) weglasse, lässt er das Hauptmenü (nicht den Namenseingabescreen) dort wo es ist und die eingabe ist auf dem Hauptmenü auf der angegebenen Position.

Könnte mir iwer helfen?

(Ich hoffe das ict verständlich Smile)
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Jo0oker

BeitragDi, März 30, 2010 11:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

so, als erstes machst du folgendes:
Code: [AUSKLAPPEN]

;Vor der Schleife
Global MX;
Global MY;

;Und in der Schleife dann:
MX = MouseX()
MY = MouseY()


Finde ich persönlich schöner und vorteilhafter.

Und nun zu deinem eigendlichen Problem, nimm doch einfach die Koordinaten mit in die IF-Abfrage:

Code: [AUSKLAPPEN]

If MouseDown(1)and (MX = 100) and (MY = 100) Then ;MAKIERTMAKIERT
   
      Locate 260, 375
   
      name$ = Input("")
       
      DrawImage mouse, MX, MY
       
      CreateDir("USERDATA\" + name$ + "")
      CreateDir("USERDATA\" + name$ + "\save")
       
   EndIf   



Ich hoffe, das war dein Problem.

Das Eingabefeld öffnet sich jetzt nur noch, wenn du mit der Maus an der Stelle 100/100 bist.

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!
 

CO2

ehemals "SirMO"

BeitragDi, März 30, 2010 11:20
Antworten mit Zitat
Benutzer-Profile anzeigen
leider tut sich bei mir da gar nichts Smile

Wenn ich auf stelle 100/100 bin (makiert mit nem rect Smile) und dann linke Maustaste (mousehit(1)) drücke, passiert gar nichts, aber im Grunde war das genau das was ich wollte, nur das meine Namenseingabe ned mehr funzt Smile
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Jo0oker

BeitragDi, März 30, 2010 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau bei 100/100 macht auch keinen sinn.

Musst halt wissen wo du die Position haben willst.
So ist sie zum Beispiel in einem Quadrat, das die größe von 50x50 hat:

Code: [AUSKLAPPEN]


If MouseDown(1)and (MX => 50 and MX <= 100) and (MY => 50 and MY <= 100) Then ;MAKIERTMAKIERT



Das passende Quadrat dazu wäre also:
Code: [AUSKLAPPEN]
Rect 50,100,50,100



lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!
 

CO2

ehemals "SirMO"

BeitragDi, März 30, 2010 11:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder bin ich zu blöd oder weiß gott was,

bei mir funzt das ned ich klicke wien bekloppten in dem rect rum aber nichts tut sich...

Könnte man auch irgendwie programmieren, dass man sofort den Namen eingegeben kann (natürlich nur wenn man 'Neues Spiel' vorher geklickt hat)?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Jo0oker

BeitragDi, März 30, 2010 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin auch ein DUmmbatz ey Very Happy

So geht es:

Code: [AUSKLAPPEN]

Global MX
Global MY

While Not KeyHit(1)
   
   MX = MouseX()
   MY = MouseY()
   
   Cls
   
   If MouseDown(1)And (MX => 50 And MX <= 100) And (MY => 50 And MY <= 100) Then ;MAKIERTMAKIERT
      
      Local name$ = Input("Name: ")
      
   EndIf
   
   Rect 50,50,50,50
   
   
   Flip
   
   
Wend


lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!
 

CO2

ehemals "SirMO"

BeitragDi, März 30, 2010 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok funktioniert thx Smile

trotzdem noch die Frage:
kann man auch ohne irgendetwas zu drücken den Namen sofort eingegeben?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Jo0oker

BeitragDi, März 30, 2010 11:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar, einfach die Bedingung weglassen.

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!
 

CO2

ehemals "SirMO"

BeitragDi, März 30, 2010 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
also ohne 'if'?

das hab ichon probiert, da ist aber der fehler, das irgendwo im hauptmenü das eingabefeld ist Smile
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group