Pixel Steuern

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Raiden93

Betreff: Pixel Steuern

BeitragSa, März 20, 2010 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich möchte das ich meinen Pixel nach oben unten rechts oder links steuern kann nur leider funktioniert das nicht.
Code: [AUSKLAPPEN]

Graphics 400,300,32,0
SetBuffer BackBuffer()
SeedRnd MilliSecs()

l = 200
i = 200

Plot l, i

For KeyDown (1)
l - 1
Next

End

Xeres

Moderator

BeitragSa, März 20, 2010 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Am besten arbeitest du die Standard Tutorials durch, Siehe Tipps für Neueinsteiger und BlitzFAQ und/oder stöbere in dem Unterforum FAQ und Tutorials.
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)

Raiden93

BeitragSa, März 20, 2010 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es mal überarbeitet aber er schliest das Programm gleich wieder.
Code: [AUSKLAPPEN]

Graphics 400,300,32,0
SetBuffer BackBuffer()
SeedRnd MilliSecs()

l = 200
i = 200

Plot l, i

If KeyDown (87)
l =- 1
End If




 

da_poller

BeitragSa, März 20, 2010 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
wie xerxes schrieb. schau dir die grundlagen an. (robs bb kurs ist sehr zu empfehlen) danach sollte das pixel programm kein problem mehr sein.

count-doku

BeitragSa, März 20, 2010 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

du musst schon den Pixel immer neu zeichnen, halt jeweils an der neuen Position.
BlitzBasic: [AUSKLAPPEN]
Graphics 400,300,0,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Local x = 200
Local y = 200
Local frame_timer=CreateTimer(30);Damit das Bild nur 30mal in der Sekunde aktualisiert wird.
;Das Auge sieht 29.999~

While KeyHit(1)=0;Schleife solange bis ESC gedrückt wird
Cls;Bildschirm löschen
Plot x,y;Pixel malen
x=x+(KeyDown(205)-KeyDown(203));Bewegen x-Achse
y=y+(KeyDown(208)-KeyDown(200));Bewegen y-Achse
WaitTimer frame_timer;Auf Timer warten
Flip 0;Auf den Bildschirm flippen
Wend
End;Ende

Wenn du den Code nicht verstehst frag!
Ansonsten würde ich dir empfehlen die Tuts durchzuarbeiten,
ein gutes: http://de.wikibooks.org/wiki/B...y-Tutorial


mfg,
count-doku


PS. Willkommen im Forum Very Happy

M2M

BeitragSa, März 20, 2010 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Code an sich stimmt, jedoch enthält dein Programm keine Hauptschleife! Es wird einfach Zeile für Zeile durchgearbeitet, dannach wird das Programm (erfolgreich) beendet. Eine Hauptschleife verhindert das automatische Beenden, indem es Anweisungen innerhalb solange wiederholt, wie die angegebene Bedingung wahr ist.
Bedindungen können zB sein:
Arrow solange nicht die Escape-Taste gedrückt wurde (not keyhit(...))
Arrow solange das Programm nicht durch den X-Knopf geschlossen wird
Arrow solange eine beliebige Variable einen bestimmten Wert hat (zB run = 1)

Eine Hauptschleife kannst du uA mit While-Wend oder auch Repeat-Until/Forever bilden.
Beispiele:

Code: [AUSKLAPPEN]
While Not KeyHit(1)

     hier ist Platz für deine Anweisungen ( Grafikbefehle, Berechnungen, Tastaturabfragen, usw)

Wend


oder

Code: [AUSKLAPPEN]
Repeat

   Anweisungen

Until keyhit(1)



Code: [AUSKLAPPEN]
Repeat

 Anweisungen
  If KeyHit(1) then End

Forever




Und nochmal konkret auf dein "Spiel" zugeschnitten


Code: [AUSKLAPPEN]

Graphics 400,300,32,0
SetBuffer BackBuffer()
SeedRnd MilliSecs()

l = 200
i = 200

While Not Keyhit(1)
 Cls
  Plot l, i

If KeyDown (87)
 l =- 1
End If

 Flip

Wend


Cls steht für ClearScreen, löscht also den Bildschirm. Das ist notwendig, vor Allem wenn Bewegung im Spiel ist. Da du den Pixel ja ständig an eine andere Stelle schiebst, muss er auch wieder an dieser neuen gezeichnet werden. Es muss also "der alte Pixel gelöscht werden", neu berechnet werden und anschließend an seiner neuen Position gezeichnet werden. Der Wechsel geschieht mit Flip.



Ich hoffe ich konnte dir eine kleine Hilfe geben, am Besten siehst du dir das Ganze nocheinmal genauer an.

Midimaster

BeitragSo, März 21, 2010 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Da empfehle ich doch mal mein Tutorial "Programm-Ablauf für Anfänger":

https://www.blitzforum.de/foru...hp?t=33584

Raiden93

Betreff: Lösung

BeitragSo, März 21, 2010 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bedanke mich für die guten Tipps ich bin nun mit meinem kleinen Experiment fertig und es schaut so aus.
Code: [AUSKLAPPEN]

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;~~~~~~Raiden~Plot Bewegen~~~~~~
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Graphics 400,400,32,0
SeedRnd MilliSecs()
SetBuffer BackBuffer()

z = 200
x = 200

While Not KeyHit(1)
  Cls
  Plot z,x
  ;Links
  If KeyDown(203)
    z = z - 1
  End If
  ;Rechts
  If KeyDown(205)
    z = z + 1
  End If
  ;Oben
  If KeyDown(200)
    x = x - 1
  End If
  ;unten
  If KeyDown(208)
    x = x + 1
  End If
  Flip
Wend

TimBo

BeitragSo, März 21, 2010 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
jetzt nur noch CreateTimer ujnd WaitTimer und flip(0) benutzen.

dann ist es perfekt.

btw. schau dir mal WritePixelFast an. Ist echt viel schneller Smile

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group