FRAGEN ÜBER FRAGEN! ^^

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

DMX

Betreff: FRAGEN ÜBER FRAGEN! ^^

BeitragDo, Apr 05, 2007 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo erstmal,

erstmal kurz zusammenfassen, was ich eigentlich will: Also ich habe vor ein Spiel zu programmieren wie manch anderer! Nun denn ich bin noch ein "NOOB", wenn es über Programmieren geht....ich habe viele Turtorials gelesen......aber ob dir mir so richtig daran zweifel...ich wollte mir sogar ein Buch kaufen, aber die aus der Buchhandlung haben mir gesagt, dass erst ab Mitte 2007 ein Buch über Blitz Basic erscheihnen wird....dauert mir noch zu lange und dann habe ich euch gefunden! Very Happy Vielleicht könnt ihr mir wegen meinen Anfänger Probleme helfen! Das hoffe ich zumindest!

Um wieder zurück zum Thema zu kommen, ich habe vor ein spiel zu programmieren und das ist gar nicht einfach! Wie auch immer um ein Spiel zu programmieren muss man erstmal ein Grundgerüst aufbauen, d.h., dass ich ein MAIN Menu brauche! Das kennt ihr ja aus vielen kommenziellen Games:




Neus Spiel



Spiel Laden


Option



Exit

und am besten noch ein Hintergrundbis im Menu....doch das ist nicht einfach....wie kann ich es programmieren?...worauf muss ich achten? Mir ist klar, dass man ein Befehl dafür geben muss um mit der Mous taste Neustart oder Option zu klicken um zum nächsten Fenster zu kommen!Aber ich kenn den Befehl nicht und wie man es ganz genau macht.....bei dieser Sache hänge ich irgendwie zu lange! (Ist schon frustrierend wenn am Anfang seines ersten Programmiertes Spiel nicht mehr weiter kommt! Crying or Very sad )

Vielleicht könnt ihr mir Beispiel Programme zeigen oder mir wenigsten irgendeinen Hinweis geben! Damit ich wenigsten irgendwie orientieren kann.

Ich finde es mal wichtig, dass man das überhaupt lernt wie man es kann! Ich habe überall rumgelesen....und nun ja ist für mich kein Problem ein Hintergrundbild zu machen ....oder diese Wörter auf dem Bildschirm zu zeigen, aber das bringt mich noch gar nicht weiter....wenn ich nicht mal ein normales Menu vor ein Game programmieren kann!

Ich bedanke mich im vorraus für eure Mühen!

M.f.G. DMX



Ps.: Sry....das ich keine Fachausdrücke benutze, ich hoffe ihr wisst schon was ich von euch will Smile

Christoph

BeitragDo, Apr 05, 2007 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich macht man das Hauptmenü eines Spiels nicht am Anfang (oder ich zumindest nicht)...aber:

1. Ich muss ein Bild laden (Benötigte Befehle: ql:loadimage)
2. Ich muss das Bild anzeigen (Benötigte Befehle: ql:drawimage)
3. Ich muss überprüfen, ob die Maus über dem Bild ist
(Benötigte Befehle: ql:mousex, ql:mousey, ql:imagewidth, ql:imageheight (ql:if Wink ))
4. Wenn ja muss ich überprüfen, ob die linke Maustaste gedrückt wird (ql:mousehit)
5. Wenn ja, muss irgendwas gemacht werden (ist ja bei jedem Knopf verschieden)

So in etwa musst du das machen.

aMul

Sieger des Minimalist Compo 01/13

BeitragDo, Apr 05, 2007 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Willkommen im Forum!

2. Schön, das du zugibst, dass du keinen Plan hast(ist nicht bei allen Anfängern so) Wink

3. Versuch dich lieber erstmal an etwas einfacherem.
Ein kleines Programm, was z.B per 'Input()' fragen stellt und die eingegebenen Information zum Schluss gebündelt wieder ausgibt, ist meiner Meinung nach ein guter Anfang um mit Variablen und den grundlegenden Befehlen zurechtzukommen Smile
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

DMX

BeitragDo, Apr 05, 2007 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
danke erstmal für eure Antworte

Die Befehle Print, Input und Variabeln..kenn ich mich schon recht gut aus...also denke ich...ich habe mich auch bei dieser Seite informiert: www.robsite.de ....oder wie sie in etwa heißt


Das ich ein Hintergrundbild schaffe, das wird auch kein problem sein und das ich die Mouse einschalte ist auch kein Problem....die frage ist nur eher, wie kann ich mit der Mouse wie z.B. Optionen drauf klicken um auf ein neues "Fenster" zu kommen....also Start, Option oder Exit sowas in der Art wie Buttons zu bekommen! Und dann auf die nächste Seite zu kommen...


gut wäre, wenn ihr Beispiel texte kennt, wo manche ein einfaches Menu aufgebaut haben.....damit ich ein Bild davon machen kann.


M.f.G. DMX
 

Darkbyte

BeitragDo, Apr 05, 2007 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Also auch erstmal Willkommen im Forum.

also ein Beispiel für den Punkt Exit der ist am kürzesten:


Code: [AUSKLAPPEN]

Bilder Laden
[...]
If ImagesCollide(MouseBild,X,Y,0,ExitButton,100,100,0) And Mousehit(1) Then
end
Endif


Also erstmal die Erklärung. ImagesCollide Prüft Pixelgenau ob eine Kollision statt gefunden hat. Dann muss ich den Bildnamen angeben und seine Koordinaten. Die 0 ist für Frames gedacht (störe dich nicht daran das lernst du später irgendwann noch, gib einfach eine 0 an). Mit Mousehit(1) überprüfe ich Ob die linke Maustaste gedrückt worden ist.

Hoffe du kannst was damit anfangen ^^
 

Darkbyte

BeitragDo, Apr 05, 2007 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleiner Tipp. Wenn du mehrere Buttons so überprüfen möchtest dann setzte am Anfang der Schleife: klick = Mousehit(1) somit hat, wenn die linke Maustaste gedrückt worden ist, den Wert 1 gespeichert. um das dann in den Code um zusetzten hier nochmal ein kleines Beispiel:

Code: [AUSKLAPPEN]

Bilder Laden
[...]
Repeat
klick = Mousehit(1)
[...]
If ImagesCollide(MouseBild,X,Y,0,ExitButton,100,100,0) And klick = 1  Then
end
Endif
[...]


Warum? Weil sonst das Klicken nicht richtig funktioniert.
 

DMX

BeitragDo, Apr 05, 2007 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
danke...supper...ich habe schon mir gedacht das es etwas mit If und endif...irgendwie zu tun hat...morgen probier ich es aus...und dann sag ich dir bescheid ob ich damit erfolgreich gewesen biin! Aber wer noch weiter Tipss hat. der soll es ruhig hier posten...bin für jede Hilfe dankbar! Wink

skey-z

BeitragDo, Apr 05, 2007 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hy und willkommen,

was du suchst, ist eine Hauptschleife, die wiederum andere Schleifen ausführt, je nachdem welcher Button gedrückt wurde.

Such mal hier im Forum nach "Spielschleife" unter Codearchiv, dort hat SucoX(meine ich jedenfalls) mal ein tutorial geschrieben wie man sowas aufbauen kann und ich habe es auch in meinen Projekten eingesetzt, ist vlt. am Anfang etwas schwierig zu verstehen, wie das Prinzip genau funktioniert.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Jo0oker

BeitragDo, Apr 05, 2007 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier sihst du mal wie soetwas augebaut sein könnte.
Ich hoffe das ist nich zu viel code auf einmal.

Code: [AUSKLAPPEN]


Graphics 1024,768,32,2
SetBuffer BackBuffer()

ok = LoadImage("ok1.bmp")
ok2 = LoadImage("ok2.bmp")
pointer = LoadImage ("pointer.bmp")
anwahl = 0

Repeat
Cls
x = MouseX()
y = MouseY()
If anwahl = 0 Then DrawImage ok , 200,200
If anwahl = 1 Then DrawImage ok2 , 200,200

If ImagesOverlap(ok,200,200,pointer,x,y) = 1 Then anwahl = 1
If ImagesOverlap(ok,200,200,pointer,x,y) = 0 Then anwahl = 0



If MouseHit(1) Then an_ok = 1
If anwahl = 1 And an_ok = 1 Then Goto en
DrawImage pointer,x,y

Flip
Until KeyHit(1)



.en
Graphics 1024,768,32,2
SetBuffer BackBuffer()
Text 300,300,("Vertig")
WaitKey



PS: Mit deiner Beschreibung kann man wenigstens was anfangen, was man nich immer behaupten kann.

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

aMul

Sieger des Minimalist Compo 01/13

BeitragDo, Apr 05, 2007 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Code ist Müll, Jo0oker.
Allein wegen dem Goto gehört er schon in die Tonne...
Und der Rest hilft auch keinem.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

DMX

BeitragDo, Apr 05, 2007 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaube ich habe jetzt das Prinzip ungefähr verstanden...eigentlich geht es um "Bedingungen"...also so drücke ich es mal aus! Wenn die Mouse folgende BEdingung erfülllt....passiert das oder gar nix!....

Um es mal einfach auszudrücken Smile

mas93

BeitragDo, Apr 05, 2007 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Jap auch von mir wilkommen im Forum.

Aber das mit dem "klick" wie darkbyte es beschrieben hat, ist garnicht nötig, wenn du einfach mousehit mit mousedown ersetzt.

Aber ich rate dir aus eigener erfahrung zuerst Das Spiel und dann das menü zu machen.

Weiterhin Viel Spaß im Forum!
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]
 

Darkbyte

BeitragDo, Apr 05, 2007 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Achja noch ein Tipp, wenn du mein Beispiel ausprobierst an z.b Start dann benutze statt end ;Gusob Start; du musst dann natürlich in deiner Hauptschleife (die schleife in der dein Spiel lauft, das Menü ist z.B die Menüschleife) .Start einsetzen dann wird mit Gosub zu start gewechselt bzw. gesprungen. Wenn jetzt in deiner Spielschleife alle leben verloren sind oder halt das Spiel zu ende ist wird mit Return zurück zum Menü gesprungen. das heißt mit Return springt man dahin wo man Gosub benutzt hat. ( ich hoffe du verstehst das kann das nichts so gut Formulieren). Benutze nie Goto das macht deinen Quelltext nur undurchschaubar (Ich spreche aus Erfahrung ^^).
 

DMX

BeitragDo, Apr 05, 2007 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ich werde es erstmal ausprobieren und studieren...und dann werde ich euch berichten, was ich dann morgen alles geschaft habe....!

Lunatix

BeitragFr, Apr 06, 2007 2:59
Antworten mit Zitat
Benutzer-Profile anzeigen
mas93, er will nicht draufhalten wie'n irrer, er will klicken Wink

Des weiteren verstehe ich nicht, warum er soclhe befehle wie "Gosup" order gar Goto (igitt! oO) verwenden sollte.

Mal was von mir, hatte grad etwas langeweile ^^ :

Code: [AUSKLAPPEN]
Graphics 640,480,32,2
SetBuffer BackBuffer()

Global mode%
Global g_mHit%,g_mx%,g_my%

AddButton("New Game",20,20,200,20,1)      ;Zwei neue Buttons hinzufügen...
AddButton("Quit",20,50,200,20,2)

timer = CreateTimer(100)      ;Timer erstellen, damit das programm nicht unnötig viel
                                          ;CPU leistung verschwendet
                                          
While True                           ;Hier wird eine Endlosschleife erstellt...

   g_mHit = MouseHit(1)         ;Da beim abfragen der Maus befehle der status (True) gelöscht wird, und bein
                                          ;nächsten Abfragen deshalb ein "0" status zurückgegeben würde, speichern wir
   g_mx = MouseX()                  ;die werte in eine Variable.
   g_my = MouseY()

  Select mode                        ;Modus wählen bzw. prüfen
    Case 0                           ;Im Fall "0" : Menu ausführen
      rMenu()         
    Case 1                           ;Im Fall "1" : Spiel ausführen
     rGame()
     Default                        ;Ansonsten : beenden (diese liste könnte man so eweig weiterführen)
      End
  End Select
   
   Flip                                 ;Backbuffer anzeigen und löschen
   Cls
   WaitTimer timer                  ;Hier wird auf den Timer gewartet
Wend
End

Type TButton                        ;Der Type der die Buttons verwaltet; Ein Type kann beliebig oft erstellt
                                          ;werden, deshalb ist er gut geeignet für die Buttons.
   Field bText$                     ;Feld "bText", enthält den Text der später angezeigt werden soll                                       
   Field x%,y%                        ;x- und y-koordinate
   Field width%,height%         ;länge und höhe der selektion (beim überfahren mit der maus)
   Field Mode%                        ;Modus, 1 = Game, 2 = Ende
End Type

Function rMenu%()
   For b.TButton = Each TButton         ;Jeden erstellten Button in einer Schleife abarbeiten
     If RectsOverlap(b\x,b\y,b\width,b\height,g_mx,g_my,1,1)   ;Wenn die Maus über dem Button ist...
         If g_mhit                                 ;Wenn die maus gedrückt wurde...
            Mode = b\Mode                        ;Wird der globalen Variable "Mode" der Wert des Buttons zugewiesen
            FlushKeys()                           ;Aktuelle key-staten löschen
         EndIf
         Color 0,0,$ff0000                     ;Html Farbe "rot" (Mouse over)
      Else
         Color 0,0,$00ffff                     ;Html Farbe "Blau"   (Normal)
      EndIf
      Text b\x,b\y,b\bText                  ;Text des Buttons an dessen x und y position anzeigen
   Next
End Function

Function rGame()
   Text 20,20,"ESC : Return to menu; Q : Quit"
   If KeyHit(1)
      Mode = 0                        ;Zurück ins Menu mit moudus "0"
      FlushKeys()
   Else If KeyHit(16)            ;Taste "q" für Quit - beenden
      End
   EndIf
End Function

Function AddButton(bText$,bX%,bY%,bWidth%,bHeight%,bMode%)   

   b.TButton = New TButton      ;Ein neues Handle der Klasse TButton erstellen
   b\x=bx                              ;Werte x,y,width (breite), height (höhe), mode und Text
   b\y=by                              ;Zuweisen
   b\width=bwidth
   b\height=bheight
   b\Mode=bMode
   b\bText=bText

End Function


Hoffe es hilft, habs aber reichlich Dokumentiert.
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group