Spiele-Idee
Übersicht

Gehe zu Seite 1, 2, 3, 4 Weiter
![]() |
SnadeBetreff: Spiele-Idee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab mir die Robsite TuT's durchgelesen und im 10. Kapitel stand das man jetz so weit waehre ein spiel zu schreiben. Natuerlich dachte ich da nich an einen High-End 3D Shooter. Aber mir faellt nichts ein was ich machen koennte. Weis jemand was man mit diesen kentnissen machen koennte? Hat jemand vieleicht einen guten beispiel code oder weis jemad wo ich fuer meine ketnisse gute her kriege? Die ich mir bei den samples von Blitz Basic 3D angeguckt habe da sind so lange functions drinne die versteh ich nich^^ (waren natuerlich 2D samples).
Dann hab ich noch eine Frage ich hab ein Menu gebastelt das hat Start und Ende. Ende beendet das Programm klappt soweit auch ganz gut! aber der Start button sollte eine animiertes bild anzeigen das vom Robsite TuT "8. Bilder anzeigen" hab eine Function gemacht geht aber ihrgendwie nicht auf der Robsite gabs kein beispiel dazu. Der fehler der kommt ist "Illegal Memory Address" Hier mal der Code Code: [AUSKLAPPEN] Function Frame1()
Repeat For I=0 To 11 DrawImage trooper, 200,100,I Next Until KeyHit(4) End Function Graphics 640,480,32,1 SetBuffer BackBuffer() start = LoadImage("gfx\start.png") maus = LoadImage("gfx\maus.png") ende = LoadImage("gfx\Ende.png") head = LoadImage("gfx\head.png") trooper = LoadAnimImage("gfx\trooper.png",48,52,0,12) ; Transparente Farbe festlegen (gruen). MaskImage start, 0, 255, 0 MaskImage maus, 0, 255, 0 MaskImage ende, 0, 255, 0 MaskImage head, 0, 255, 0 MaskImage trooper, 0, 255, 0 Color 0,255,0 Repeat Cls DrawImage start, 180,50 DrawImage ende, 180,135 DrawImage maus, MouseX(),MouseY() If ImagesCollide(maus, MouseX(), MouseY(), 0, start, 180, 50, 0) If MouseDown(1) Then Frame1() If ImagesCollide(maus, MouseX(), MouseY(), 0, ende, 180, 135, 0) If MouseDown(1) Then End Flip Until KeyHit(1) End mfg. Snade |
||
- Zuletzt bearbeitet von Snade am So, Jan 04, 2009 11:26, insgesamt einmal bearbeitet
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Steht das eigentlich schon in den FAQ? Den Fehler den du gemacht hast macht jeder irgendwann mal ![]() Global ![]() mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Snade |
![]() Antworten mit Zitat ![]() |
---|---|---|
so wie ich das aus aus der Hilfe FQA interpretiert habe muss es so aus sehen oder?
Code: [AUSKLAPPEN] Function Frame1()
Repeat For I=0 To 11 DrawImage trooper, 200,100,I Next Until KeyHit(4) End Function Global Frame1 Graphics 640,480,32,1 SetBuffer BackBuffer() start = LoadImage("gfx\start.png") maus = LoadImage("gfx\maus.png") ende = LoadImage("gfx\Ende.png") head = LoadImage("gfx\head.png") trooper = LoadAnimImage("gfx\trooper.png",48,52,0,12) ; Transparente Farbe festlegen (blau). MaskImage start, 0, 255, 0 MaskImage maus, 0, 255, 0 MaskImage ende, 0, 255, 0 MaskImage head, 0, 255, 0 MaskImage trooper, 0, 255, 0 Color 0,255,0 Repeat Cls DrawImage start, 180,50 DrawImage ende, 180,135 DrawImage maus, MouseX(),MouseY() If ImagesCollide(maus, MouseX(), MouseY(), 0, start, 180, 50, 0) If MouseDown(1) Then Frame1() If ImagesCollide(maus, MouseX(), MouseY(), 0, ende, 180, 135, 0) If MouseDown(1) Then End Flip Until KeyHit(1) End habs so gemacht kommt die gleiche Fehlermeldung *nicht hauen wenn ich falsch gemacht hab^^* |
||
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht existiert die Bilddatei nicht? | ||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weiß ned woher du das hast, aber so gehörts bestimmt nicht, ich meinte es so:
Code: [AUSKLAPPEN] Global trooper = LoadAnimImage("gfx\trooper.png",48,52,0,12)
|
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Snade |
![]() Antworten mit Zitat ![]() |
---|---|---|
achso dachte du meinst mit Global die Function ![]() werds gleich mal probieren [EDIT1] ne das wahr nich der fehler wenn ich so mache: Code: [AUSKLAPPEN] Function Frame1()
Repeat For I=0 To 11 DrawImage trooper, 200,100,I Next Until KeyHit(4) End Function Global Frame1 Graphics 640,480,32,1 SetBuffer BackBuffer() start = LoadImage("gfx\start.png") maus = LoadImage("gfx\maus.png") ende = LoadImage("gfx\Ende.png") head = LoadImage("gfx\head.png") Global trooper = LoadAnimImage("gfx\trooper.png",48,52,0,12) ; Transparente Farbe festlegen (blau). MaskImage start, 255, 255, 255 MaskImage maus, 255, 255, 255 MaskImage ende, 255, 255, 255 MaskImage head, 255, 255, 255 MaskImage trooper, 255, 255, 255 Color 0,255,0 Repeat Cls DrawImage start, 180,50 DrawImage ende, 180,135 DrawImage maus, MouseX(),MouseY() If ImagesCollide(maus, MouseX(), MouseY(), 0, start, 180, 50, 0) If MouseDown(1) Then Frame1() If ImagesCollide(maus, MouseX(), MouseY(), 0, ende, 180, 135, 0) If MouseDown(1) Then End Flip Until KeyHit(1) End krieg ich noch nicht mal mehr eine Fehlermeldung mein Computer kriegt fast nen freeze muss den Taskmanger starten um das zu beheben wenn ich das Global wieder wegnehme kommt wieder "Illegal memory Address" also alles bei "LoadAnimImage" natuerlich! |
||
- Zuletzt bearbeitet von Snade am So, Jan 04, 2009 11:01, insgesamt einmal bearbeitet
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, er meint mit Global das Trooper Bild globalisieren, so dass es in der Function verwendet werden kann.
MfG |
||
![]() |
Snade |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja stuertz aber trozdem ab! | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function Frame1()
Streich das Repeat und Until Keyhit() da raus, das hat da nichts zu suchen. Genauso wie die Zählschleife sinnlos ist, da du nie bis zum Flip kommst, um überhaupt die ganzen Frames an zu zeigen.
Repeat For I=0 To 11 DrawImage trooper, 200,100,I Next Until KeyHit(4) End Function Benutze eine Variable die steuert, ob der Frame für's Bild hochgezählt wird. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Snade |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deinen letzten Satz verstehe ich nicht ganz mit der Zaehlerschleife wollte ich das ja machen koenntest du mir an einem Beispiel erlaeutern wie du das meinst? | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Zählschleife zählt direkt die Frames hoch, was du brauchst, ist eine Steuerungsvariable, die bestimmt, ob in diesem Durchlauf der Hauptschleife etwas zur passenden Variable dazugezählt werden darf. | ||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Snade |
![]() Antworten mit Zitat ![]() |
---|---|---|
kannst du mir bitte ein beispiel code posten ich versteh nicht so ganz was mit steuerungsvariable gemeint ist sry aber ich bin eben ein noob ![]() |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie wärs mit so: frame speichert den momentanen frame
Code: [AUSKLAPPEN] Graphics 640,480,32,1
SetBuffer BackBuffer() start = LoadImage("gfx\start.png") maus = LoadImage("gfx\maus.png") ende = LoadImage("gfx\Ende.png") head = LoadImage("gfx\head.png") Global trooper = LoadAnimImage("gfx\trooper.png",48,52,0,12) Global Frame ; Transparente Farbe festlegen (blau). MaskImage start, 255, 255, 255 MaskImage maus, 255, 255, 255 MaskImage ende, 255, 255, 255 MaskImage head, 255, 255, 255 MaskImage trooper, 255, 255, 255 Color 0,255,0 Repeat Cls DrawImage start, 180,50 DrawImage ende, 180,135 DrawImage maus, MouseX(),MouseY() If ImagesCollide(maus, MouseX(), MouseY(), 0, start, 180, 50, 0) If MouseDown(1) Then Frame1() If ImagesCollide(maus, MouseX(), MouseY(), 0, ende, 180, 135, 0) If MouseDown(1) Then End Flip Until KeyHit(1) End Function Frame1() frame=frame+1 If(frame>11) frame=0 DrawImage trooper, 200,100,frame End Function |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Snade |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hat leider nich geklappt hmm das kann doch nicht so schwer sein tausende haben das doch schon hinbekommen ![]() |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
vllt solltest du erstmal verständlcih machen was du genau willst...
vllt liegt es an imagescollide, das löst manchmal fehler aus |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Snade |
![]() Antworten mit Zitat ![]() |
---|---|---|
Edit1: habs jetz hinbekommen aber der soldat bewegt sich ungefaehr 3mal zu schnell wo muss ich da ein delay einbauen in der Function oder wo anders?
Hatte nur vergessen Global Frame hinzuschreiben ![]() Edit2: hab das mit dem delay auch hinbekommen danke an alle! |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
delay ist natürlich unschön, da es das ganze programm aufhängt und du während dessen keine anderen sachen machen kannst.
Besser ist zum beispiel das: lass die variable frame auf das zehnfache der eigentlichen framezahl laufen und zeichne den player wie folgt Code: [AUSKLAPPEN] DrawImage trooper, 200,100,frame/10
|
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das währe auch unschön da dann die Animation auf einem Schnellen PC schneller laufen würde.
Ich würde das ganze mit MilliSecs ![]() mfg ichbin007 |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 640, 480, 32,2
SetBuffer BackBuffer() While Not KeyHit(1) Cls If MilliSecs() > zeit + 1000 Then ;Wenn die akktuelle Zeit grösser ist als die anfangszeit + 1 sekunde zeit = MilliSecs() ;die anfangszeit der akktuellen gleichsetzen frame=frame+1 ;frame raufzählen End If If frame>6 Then frame=1 ;wenn frame grösser als 6, dann frame = 1 Text 0,0,"Frame Nummer:"+frame Flip Wend Um einiges effektiver als Delay ![]() Und mein Tipp, fang bei nem Game nicht am Menü an.. mfg ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
*seufz*
Mit Flip ![]() ![]() ![]() Wer allerdings seine Image-Frames nicht mit jedem Spiel-Frame verändern will, der sollte wirklich zu Millisecs greifen wie es ozzi beschrieben hat. Schönes Rest-Wochenende. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Gehe zu Seite 1, 2, 3, 4 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group