Probleme beim Spiel
Übersicht

BlubbBetreff: Probleme beim Spiel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
aaalso: ich mache so etwas in die Richtung Snake. Das erste Problem ist, wenn ich mit der Spielfigur auf den einen Punkt gehe, soll der weg gehen und an einer anderen Stelle wieder kommen und so weiter. Doch wenn ich darauf gehe, kommt der zwar an einer andern Stelle der neue Punkt, doch wenn ich darunter gehe bleibt der erste Punkt da und der andere Ounkt verschwindet wieder. Ich habe das jetzt mi If ImagesCollide gemacht aber das geht ja nicht, weiß aber auch nicht, wie ich das anders machen soll :/ Das zweite ist, wenn ich zum Beipiel in ein nächtes Level möchte wenn ich das eine geschafft habe, wie kann ich das programmieren? Ich hab zwar noch andere Fragen aber das wären jetzt erstmal die ersten und wichtigsten im Moment ich bin völlig am verzweifeln! wäre nett, wenn mir jemand helfen könnte! Danke schonmal. ![]() ich hab noch gar nicht viel, aber hier mal das, was ich schon habe: Code: [AUSKLAPPEN] Graphics 500,500
AppTitle "Spiel" x=30 y=30 ;Bilder; Spielfigur=LoadImage ("Spielfigur.bmp") Hintergrund=LoadImage ("Hintergrund.bmp") XXX=LoadImage ("x.bmp") ;Tasten; SetBuffer BackBuffer(); While Not KeyHit(1); If KeyDown(205); x=x+1; EndIf; If KeyDown(203); x=x-1; EndIf; If KeyDown(200); y=y-1; EndIf; If KeyDown(208); y=y+1; EndIf; Cls; DrawImage Hintergrund,0,0; DrawImage Spielfigur,x,y; DrawImage XXX,400,400; If ImagesCollide (Spielfigur,x,y,0,XXX,400,400,0) DrawImage XXX,5,280 EndIf; Flip; Wend; |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
du musst halt die Kreispositions in einer Variable speichern. Und dann bei Kollison den Inhalt dieser verändern(mit Zufallsgenerator). ImagesCollide ist fehlerbehaftet, verwende ImagesOverlap. Du solltest einen Timer und Flip 0 verwenden, weil sonst dein Prog 100% CPU frisst. Verbesserter Code: (Verstehen sonst fragen.Nicht einfach übernehmen.) Code: [AUSKLAPPEN] Graphics 800,600,32,2
AppTitle "Spiel" Local x=30;Spieler Position Local y=30 Local a=400;Kreis position Local b=400 ;Bilder; Spielfigur=LoadImage ("Spielfigur.bmp") Hintergrund=LoadImage ("Hintergrund.bmp") XXX=LoadImage ("x.bmp") ;Tasten; Local timer=CreateTimer(60) SetBuffer BackBuffer(); SeedRnd MilliSecs(); Sorgt für "echten" Zufall While Not KeyHit(1); If KeyDown(205); x=x+1; EndIf; If KeyDown(203); x=x-1; EndIf; If KeyDown(200); y=y-1; EndIf; If KeyDown(208); y=y+1; EndIf; DrawImage Hintergrund,0,0; DrawImage Spielfigur,x,y; DrawImage XXX,a,b;Kreis an seinen Koordinaten malen If ImagesCollide (Spielfigur,x,y,0,XXX,a,b,0);Evtl. Kreis versetzten. a=Rand(10,790):b=Rand(10,590);Neue Kreis koordinaten zufällig setzten. EndIf; WaitTimer timer Flip 0; Cls Wend; Hast du schonmal ein paar Tuts durchgearbeitet? Wäre nicht schlecht. mfg, count-doku |
||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo.
Erstmal ein paar allgemeine Tipps: - Lass die ; weg. Du brauchst sie nicht und setzt sie auch nicht sinnvoll. - Rücke deinen Code ein. - Lass die Leerzeilen weg, das hindert den Lesefluss. - Timer/Flip 0, damit du nicht 100% CPU beanspruchst So, jetzt zu deinem Umsetzproblem: Code: [AUSKLAPPEN] DrawImage XXX,400,400
Du Zeichnest dein Bild, egal was passiert (ist) immer bei 400,400 Code: [AUSKLAPPEN] If ImagesCollide (Spielfigur,x,y,0,XXX,400,400,0)
DrawImage XXX,5,280 EndIf Wenn sich die Spielfigur und der Kreis an 400,400 berühren, wird das Bild zusätzlich an 5,280 gezeichnet. Wenn sie sich nicht mehr berühren wird nur noch das Bild an 400,400 gezeichnet -> Gebe dem XXX-Bild Koordinaten als Variablen und ändere diese bei der Kollision. Zeichne das Bild immer an diesen Koordinaten. Du darfst nachher nur noch einmal DrawImage XXX,... drin haben. MFG EDIT: Zu spät |
||
BlubbBetreff: Re: nächsten Probleme |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dankeschöön! ![]() aber jetzt habe ich die nächsten Probleme!: 1. Wie baue ich da einen Timer ein, der losgeht, sobald man das Spiel angefangen hat und nach 1 min endet? und 2. wie kann ich es programmieren, dass die punkte, die man schon "gesammelt" hat, angezeigt werden? ![]() |
||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß echt nicht, was du mit deinem Post bezwecken willst.
Aber ich würd dir raten (wegen deinen Punkten auf die der Spieler laufen soll) dir mal arrays, SeedRnd, Millisecs() und Rand anzugucken. Edit: Sorry, eben sah der Beitrag noch anders aus. Der Timer: Guck dir Millisecs() an. Den baust du dir dann mit einer einfachen If Abfrage ganz leicht selbst. Die Punkte: Guck dir mal den Befehl Text an. (Kann mir mal bitte jemand sagen wie man direkt zu Befehlen in der Hilfe verlinkt?) Lg, M0rgenstern |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und ich würde dir raten, dass du dir Tutorials anschaust, z.B. Rob's BB-Tutorial.
Edit: @Morgenstern: Code: [AUSKLAPPEN] [[Befehl]]
wird zu Befehl ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
BlubbBetreff: ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm. wie "verlinkt" man eigendlich verschiedene Level miteinander?
also wenn man das Level geschafft hat, dass man direkt ins nächste kommt? ![]() |
||
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit if-Bedingungen.
Du hast ja sicher ne Prüfung wann der aktuelle Level gewonnen ist, dann einfach den nächsten laden und starten. |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jedes Level wird meist nur durch einige Variable bestimmt. Zunächst musst du herausfinden, welche Variable eigentlich mit welchen Wert beteiligt sind, damit das Level 1 funktioniert. Vergiß dabei vor allen nicht die Variablen, die dafür =0 sein müssen.
Nun schreibst Du eine Funktion, die diese Variablen auf diese Werte setzt: BlitzBasic: [AUSKLAPPEN] Function SetzLevel() Du testest jetzt ob das Level 1 auch mit dieser Funktion noch so läuft wie bisher. Jetzt überlegst Du Dir, welche der Variablen in Level 2 wieder den alten Wert annehmen müssen, und welche einen neuen Wert erhalten: BlitzBasic: [AUSKLAPPEN] Function SetzLevel() Und das kannst Du jetzt für beliebig viele Levels machen. Jedes Level erhält einen eigenen IF-Block. Der aufruf im Hauptprogramm wäre vielleicht so: BlitzBasic: [AUSKLAPPEN] If AllesSindTot=1 Then Möglicherweise gehören in die SetzLevel() auch noch ein paar Zeilen zum Neupositionieren der Gegner, etc, Reinigen des Screens, Rest bei den Geräuschen, etc... SetzLevel |
||
Blubb |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und wie geht das, wenn man ein Menü hat, und will, dass wenn man auf 'play' drückt das Spiel anfängt? | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie durch zufall hab ich da gerade gestern nacht ein neues tutorial dazu geschrieben. Für dich könnte der letzte Absatz aus Lektion V interessant sein: "Ein Start-Screen kommt dazu "
https://www.blitzforum.de/foru...716#355716 |
||
masterman123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
midimaster ich versteh das nicht so ganz mit tut | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ist der aktuelle zustand des codes schon im forum? das poste es mal, ich schau mirs an. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group