Einfache Knöpfe für BlitzBasic?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

g0lfdrivingl3o

Betreff: Einfache Knöpfe für BlitzBasic?

BeitragSo, Aug 11, 2013 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich bin seit längerem dabei ein Spiel mit Basic zu programmieren. Bisher navigiert man in dem Spiel mit den Tasten. Ich würde jetzt aber gern auf Button umsteigen mit denen man dann zwischen den Bereichen navigiert, hab aber bisher noch nirgendwo einen Code für solche Button gefunden.
Ich hoffe ihr könnt mir hier weiterhelfen!

Grüße! ;D
Der Phaeton. Einzigartig wie ein Kunstwerk.

Xeres

Moderator

BeitragSo, Aug 11, 2013 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schätze, du meist Buttons, die man mit der Maus anklicken kann?
Was hinter dich, selber welche zu schreiben? Mauskoordinaten Prüfen und auf Klick reagieren in einer Funktion.
Zeig doch mal, wie dein Code dazu aussieht, dann kann man dir einen Tipp geben.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Tennisball

BeitragSo, Aug 11, 2013 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin.

Schonmal die Suche bemüht? https://www.blitzforum.de/forum/search.php

Grüße,
Tennisball
 

g0lfdrivingl3o

BeitragSo, Aug 11, 2013 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Ich schätze, du meist Buttons, die man mit der Maus anklicken kann?
Was hinter dich, selber welche zu schreiben? Mauskoordinaten Prüfen und auf Klick reagieren in einer Funktion.
Zeig doch mal, wie dein Code dazu aussieht, dann kann man dir einen Tipp geben.


Ja genau.

Mein Code bisher:
Das Problem ist aber, dass egal auf welchen Button man drückt, man kommt immer zum letzten Teil.
Und was mich auch etwas wundert ist, die Button erscheinen nur, wenn man mit der Maus darüber fährt. wenn die Maus weg geht, verschwindet der Button..
BlitzBasic: [AUSKLAPPEN]

Graphics 640,480
.neu
tiles = LoadImage ("block1.jpg")
maus = LoadImage ("maus.jpg")
font = LoadFont("Arial", 40,1,0,0)
SetFont font


;Grafik für MEnüpunkt erzeugen

stein = CreateImage(32,32)
SetBuffer ImageBuffer(stein)
DrawImageRect tiles, 0, 0, 444, 308, 32, 32
ScaleImage stein, 8, 2

;grafik für aktiven spielstein

aktivstein = CreateImage(32,32)
SetBuffer ImageBuffer(aktivstein)
DrawImageRect tiles, 0, 0, 2, 342, 32, 32
ScaleImage aktivstein, 8, 2

;Menü definieren

Dim Menuzeile(3) : Dim MenuName$(3)
menuzeile(1) = 100 : Menuname$(1) = "Start"
menuzeile(2) = 200 : Menuname$(2) = "Hilfe"
menuzeile(3) = 300 : Menuname$(3) = "Ende"

;
;Hauptmenu-Schleife
;
SetBuffer BackBuffer()
Repeat
Cls
menu = 0
x = MouseX()
y = MouseY()

For I=1 To 3
If ImageRectOverlap (maus, x, y, 192, 100*I, 256, 64) Then
DrawImage aktivstein, 192, I * 100
menu = I
Else
DrawImage stein, 192, I*100
EndIf
Text (640 - StringWidth( menuname$(I) )) / 2, I*100 * 12, Menuname$(I)
Next


Flip


If MouseHit(1) Then
If menu = 1 Then Goto start
If menu = 2 Then Goto hilfe
If menu = 3 Then Goto ende
EndIf


Until KeyHit(1)
End

.start
Print"start"
WaitKey
.hilfe
Print "hilfe"
WaitKey
.ende
Print "ende"
WaitKey


~EDITIERT~

Codebox hinzugefügt - bitte mach das in Zukunft selbst.
Xeres

Xeres

Moderator

BeitragSo, Aug 11, 2013 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

GoTo kannst du dir gleich abgewöhnen - das ist für winzige, spezielle Ausnahmen zu gebrauchen, die dir so schnell nicht unterkommen.
Was du willst ist function. Überlege dir, was die Funktion bekommen und zurückgeben soll.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

g0lfdrivingl3o

BeitragSo, Aug 11, 2013 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
<b>~VERSCHOBEN~</b><br /> Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

GoTo kannst du dir gleich abgewöhnen - das ist für winzige, spezielle Ausnahmen zu gebrauchen, die dir so schnell nicht unterkommen.
Was du willst ist function. Überlege dir, was die Funktion bekommen und zurückgeben soll.


D.h. ich müsste eine Function einfügen die dann den GoTo Befehl ausführt? Weil nach dem Klick auf den Button soll viel Text angezeigt und weitere Funktionen angeboten werden.

Kann ich den Code für solche Button hier irgendwo finden?
Der Phaeton. Einzigartig wie ein Kunstwerk.

count-doku

BeitragSo, Aug 11, 2013 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Goto hin oder her. Der Code funktioniert, kann zumindest so keinen Fehler finden.

Habe das Ganze um es zu testen leicht angepasst:
BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,0,2

.neu


;Menü definieren

Dim Menuzeile(3) : Dim MenuName$(3)
Menuzeile(1) = 100 : MenuName$(1) = "Start"
Menuzeile(2) = 200 : MenuName$(2) = "Hilfe"
Menuzeile(3) = 300 : MenuName$(3) = "Ende"

;
;Hauptmenu-Schleife
;
Color 255,255,255
SetBuffer BackBuffer()
Repeat
Cls
menu = 0
x = MouseX()
y = MouseY()

For I=1 To 3
If RectsOverlap ( x, y,1,1, 10, 12*10*I-50, 50, 50) Then
Color 255,0,0
Rect 10,I*10*12-50,50,50
menu = I
Else
Color 0,0,255
Rect 10,I*10*12-50,50,50

EndIf
Text 10,I* 12*10, "chearub";MenuName$(I)
Next


Flip


If MouseHit(1) Then
If menu = 1 Then Goto start
If menu = 2 Then Goto hilfe
If menu = 3 Then Goto ende
EndIf


Until KeyHit(1)
End

.start
Print"start"
WaitKey
.hilfe
Print "hilfe"
WaitKey
.ende
Print "ende"
WaitKey


Eigentlich nur die Bilder durch Rechtecke ersetzt und andere Werte für die Positionen genommen.
Ist mit den goto's nicht schön, aber geht.

Magst du etwas mehr vom Code, und/oder mal das Gesamte(mit Bildern) hochladen?
Am besten hier im Archiv...

lg,
Count-Doku

Tennisball

BeitragSo, Aug 11, 2013 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie man Funktionen benutzt

Zitat:
D.h. ich müsste eine Function einfügen die dann den GoTo Befehl ausführt?

Nein, Funktionen sollen in diesem Fall Goto ersetzen.
Das ginge dann ungefähr so:

BlitzBasic: [AUSKLAPPEN]
If MouseHit(1) Then
If menu = 1 Then start()
If menu = 2 Then hilfe()
If menu = 3 Then ende()
EndIf

; ...

Function start()
Print "start"
End Function

Function hilfe()
Print "hilfe"
End Function

Function ende()
Print "ende"
End Function

Überarbeite mal deinen Code, indem du Funktionen einbaust und poste ihn nochmal.

Gruß,
Tennisball
 

g0lfdrivingl3o

BeitragSo, Aug 11, 2013 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz großen Dank an Count Doku und Tennisball für die Codes!

Count Doku, das ist so wie ich mir das gedacht hatte! Würde es auch gehen, dass jeder Menüpunkt einen eigenen Namen bekommt?

Tennisball, danke für die Functions-erläuterung!

Da ich morgen früh raus muss, lad ich euch meinen bisherigen Code morgen hoch!

Grüße!
Der Phaeton. Einzigartig wie ein Kunstwerk.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group