Bestimmte bilder erneuern ?
Übersicht

brandyBetreff: Bestimmte bilder erneuern ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Entschuldigung erstmal für die möglicherweise kryptische überschrift , mir fiel nix besseres ein. Desweiteren möchte ich anmerken dass ich die SuFu nicht benutzt habe da ich nicht wusste, wonach ich suchen sollte. Falls so ein thread schon existiert, entschuldigt bitte.
Nun zu mir: Ich bin noch relativ neu im Programmiergeschehen, habe mich allerdings schon mit diversen tutorials befasst, im speziellen mit "Rob's BB Kurs". Ich wolte mir mal, nachdem ich kleinere programme geschrieben habe, etwas größeres Vornehmen. Mehr oder weniger. Ich wollte einen simplen "schießstand" programmieren mit zufällig auftauchenden gegnern und später auch highscores usw. Mein Problem ist, dass ich nicht weiß wie ich es fertigbringen soll, gegner solange stehen zu lassen,, bis sie tot sind. Ich kann das hier hier schlecht erklären, also poste ich mal einen teil meines codes: Code: [AUSKLAPPEN] Graphics 640, 480, 16, 2 HidePointer SeedRnd(MilliSecs()) SetBuffer BackBuffer() Global bg1 = LoadImage("hintergrund1.png") Global bg2 = LoadImage("hintergrund2.png") Global bg3 = LoadImage("hintergrund.png") Global cursor = LoadImage("cursor.png") Global target = LoadImage("target.png") MidHandle cursor Repeat If x = 640 Then DrawImage bg1, 0, 0 EndIf If x = 1024 Then DrawImage bg2, 0, 0 EndIf If x = 1280 Then DrawImage bg3, 0, 0 EndIf Flip MaskImage cursor, 255, 0, 255 DrawImage cursor, MouseX(), MouseY() Flip MaskImage target, 255, 0, 255 DrawImage target, Rnd(0, x), Rnd(y/2.08, y) Flip Until KeyHit(1) Hier wäre es evtl. noch wichtig zu erwähnen, dass dem ganzen ein menü für auflösung vorangegangen ist, weshalb jetzt für jede auflösung ein hintergrundbild geladen wird. Mein problem hierbei ist, dass bei jedem durchlauf der random-befehl erneut ausgeführt wird und der gegner sonstwo erscheint. Wie kann ich nun schreiben, dass der computer den gegner erneut an der selben stelle erscheinen lässt, d.h. kann ich einen random-wert irgendwie abspeichern (ausser in einer textdatei möglicherweise) ? Ich hätte allerdings lieber eine erklärung und die angabe bestimter befehle als ein fertiges codesegment. [/code] |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Um die Random-Werte zu speichern, musst du Variablen benutzen.
Du speicherst also für jeden Gegner die Position in einer Variable und zeichnest das Bild an der gespeicherten Position. Und noch was zu deinem Code. Du solltest Flip am Ende der Schleife benutzen. Und zwar genau einmal. Außerdem brauchst du MaskImage nur einmal nach dem Laden des Bildes auszuführen. Hier mal eine "verbesserte" Version mit Variablen. Wenn du die linke Maustaste drückst, wird eine neue Position generiert. Code: [AUSKLAPPEN] Graphics 640, 480, 16, 2
HidePointer SeedRnd(MilliSecs()) SetBuffer BackBuffer() Global bg1 = LoadImage("hintergrund1.png") Global bg2 = LoadImage("hintergrund2.png") Global bg3 = LoadImage("hintergrund.png") Global cursor = LoadImage("cursor.png") MaskImage cursor, 255, 0, 255 Global target = LoadImage("target.png") MaskImage target, 255, 0, 255 MidHandle cursor Local position_x, position_y ; Variablen deklarieren Repeat Cls ; Bildschirm löschen If x = 640 Then DrawImage bg1, 0, 0 EndIf If x = 1024 Then DrawImage bg2, 0, 0 EndIf If x = 1280 Then DrawImage bg3, 0, 0 EndIf If MouseHit( 1 ) position_x = Rand( 0, 600 ) ; Neue Position speichern position_y = Rand( 0, 400 ) End If DrawImage target, position_x, position_y ; Bild an gespeicherter Position zeichnen DrawImage cursor, MouseX(), MouseY() Flip ; Nur einmal Flippen Until KeyHit(1) |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mach doch den Random-Wert Global, dann wird er nicht jeden Schleifendurchlauf gelöscht.
Lass ihn dann nur neu berechnen, wenn der Gegner tot ist (kannst du in der Trefferabfrage einbauen). Ausserdem ist es nicht besonders speichersparend, wenn man drei Bilder lädt, wo man nur eines braucht. Entweder schon beim Laden die Abfrage nach x einbauen oder statt für jede Auflösung ein Bild zu laden, kannst du auch einfach eines laden und es dann mit ScaleImage auf die gewünschte Grösse skalieren. EDIT: Da war wohl jemand schneller als ich ^^ |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
brandy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für beiden antworten.
Eigentlich hätte ich selbst draufkommen müssen -.-. Noch ne frage: geht das auch mit der mausposition, für einschusslöcher? |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Na klar! Für alle Funktionen, die einen Wert zurückgeben.
Code: [AUSKLAPPEN] mx = MouseX( )
my = MouseY( ) ... |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
brandy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist klar, nur würde ich gerne mehrere einschusslöcher machen, muss ich das dann über types oder arrays regeln?
und gleich noch eine frage hab ich da. Ich weiß zwar die notwendigen parameter für den imagecollide befehl, jedoch nicht was sie im einzelnen bedeuten. If ImagesCollide(bild1, x1, y1, frame1, bild2, x2, y2, frame2) bild1 is klar, bild2 auch, doch der rest? |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Ja.
2. Sieh in der Hilfe oder auf blitzbase.de nach. 3. Wenn du das ein oder andere Tutorial aufmerksam gelesen hättest, hättest du dort alle deine Fragen beantwortet gesehen. |
||
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 |
0penguin0 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
brandy hat Folgendes geschrieben: Das ist klar, nur würde ich gerne mehrere einschusslöcher machen, muss ich das dann über types oder arrays regeln?
aMul hat Folgendes geschrieben: 1. Ja.
er meinte types (hoffentlich^^) |
||
i never finish anyth |
brandy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke ich hab auf blitzbase nachgesehen.
Ich hab zwar noch einige schwierigkeiten mit den types, aber ich denke dass ich das einigermaßen schnell in den griff bekommen werde. Danke für eure schnellen antworten ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group