Linie soll sich von alleine bewegen
Übersicht

sycronBetreff: Linie soll sich von alleine bewegen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich bin neu hier und wir machen gerade Blitzbasic in Informatik. Meine Frage ist nun wie man eine Linie mit einem Image von alleine größer werden lassen kann. Immom wird sie länger wenn man die pfeiltasten benutzt, aber durch die Pfeiltasten sollen sich nur die Richtung ändern hoffe ihr versteht mein Problem. mfg Martin |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Poste doch mal deinen Code und beschreib etwas ausführlicher was nicht geht wie du es willst. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
sycron |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also, ich hab eine Image (ein rechteck bei paint gezeichnet) das sich immom durch die pfeiltasten bewegen lässt. Dabei wird es nicht durch "cls" gelöscht wodurch ja eine Linie entsteht. Aber ich will das die Linie von alleine wächst ohne das man die ganze Zeit die Pfeiltasten gedrückt halten muss und dass sich die richtung in der die linie wächst sich durch die pfeiltasten ändert.
mfg |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, so wie bei Snake? | ||
between angels and insects |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann solltest Du mit den Pfeiltasten eine Richtungs variable ändern. Und diese dann mit einem Select Case abfragen. Je nach Fall addierst Du bzw. subtrahierst Du entweder von der x oder y Position. | ||
Play Satyr! |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Poste doch einfach mal Deinen Code damit wir uns ein Bild davon machen können.
Benutz dafür die [code]- tags oben über dem Eingabefeld. Schon vorneweg: es ist mehr als ungünstig auf ein Buffering zu verzichten, sprich immer nur auf ein Bild draufzuzeichnen. Eine sinnvolle Lösung könnte zb. sein sich die Mauskoordinaten zu merken.. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
sycron |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm ich will ja nichts sgaen aber könnt ihr das mal für dumme leute schreiben ich versteh kein wort^^
und ja so wie bei snake... mfg Code: [AUSKLAPPEN] b=MilliSecs() Graphics 1000,1000; Unbenannt=LoadImage("unbenannt.bmp") Unbenannt1=LoadImage("unbenannt1.bmp") hintergrund=LoadImage("hintergrund.bmp") HintergrundIII=LoadImage("HintergrundIII.bmp") HintergrundII=LoadImage("HintergrundII.bmp") x=500 y=500 blubb=PlayMusic("download.mp3") Print"Drücke Leertaste zum starten"; WaitKey; Cls; SeedRnd MilliSecs() e=Rnd(1,3) If e=1 DrawImage hintergrund,1,1 EndIf If e=2 DrawImage HintergrundIII,1,1 EndIf If e=3 DrawImage HintergrundII,1,1 EndIf c=MilliSecs; d=b-c SetBuffer BackBuffer() While Not KeyHit(1); If KeyDown(205) x=x+5 End If If KeyDown(203) x=x-5 EndIf If KeyDown(208) y=y+5 EndIf If KeyDown(200) y=y-5 EndIf SeedRnd MilliSecs() a=Rnd(1,40) If a=10 Color 1000,0,0 EndIf If x>988 Then x=988 If x<0 Then x=0 If y>730 Then y=730 If y<0 Then y=0 SeedRnd MilliSecs() a=Rnd(1,40) If a=10 Color 1000,0,0 EndIf If a=9 Color 0,1000,0 EndIf If a=8 Color 0,0,1000 EndIf If a=7 Color 1000,1000,0 EndIf DrawImage Unbenannt,x,y Flip wend |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also:
- rück deinen Code ein, dann ist er besser zu lesen. Code: [AUSKLAPPEN] for i = 1 to 10
print bla blub() next Code: [AUSKLAPPEN] for i = 1 to 10
print bla blub() next Der Unterschied sollte Klar sein. Zusammenhängende Blöcke haben die gleiche Einrückung. - Color geht je von 0-255. 1000 ist weit über die Grenze. - Das Koordinatensystem für Bilder beginnt bei 0,0 - nicht bei 1,1 - Benutz längere, aussagekräftige Variablennamen. "b" sagt mir nichts über den Sinn der Variable. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
sycron |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich sollte dazu sagen das ich auch ein Anfänger in Blitzbasic bin und erstmal zufrieden bin wenns läuft^^(mir ist schon klar das man das alles besser ordnen kann)
helft mir mal bitte und gebt mir mal ein Beispiel für einen Code wie das läuft vielen Dank mfg Martin |
||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
https://www.blitzforum.de/foru...php?t=6114
hier findest du infos etc.. Zitat: ich sollte dazu sagen das ich auch ein Anfänger in Blitzbasic bin und erstmal zufrieden bin wenns läuft^^(mir ist schon klar das man das alles besser ordnen kann)
lerns gleich richtig dann haste mehr davon. |
||
sycron |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
soll ich da jetzt mein problem nochmal posten ich will doch einfach nur hilfe nen code den ich als basis verwenden kann.... ![]() |
||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
du sollst ihn da nicht nochmal posten.
du sollst die dort angebotenen hilfen lesen verstehen und anwenden. wenn dir jetzt jeman den code richtig bastelt läuft er zwar aber du hast NULL komma NIX gelernt. |
||
sycron |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke schatz ![]() |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Sycron ,
male Anstatt auf den Buffer den du nichts clearst, lieber auf eine Bilddatei. oben halt CreateImage ![]() und in der Mainloop SetBuffer ![]() ![]() hier kannst du dann malen was du willst Setbuffer ![]() ![]() DrawImage ![]() und hier muss jetzt flip ![]() ![]() folgen. 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. |
DrFugazi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich verstehe viele Zusammenhänge auch besser, wenn ich einen funktionierenden Code vor mir habe. Schau mal das kleine Beispiel an, so funktioniert es: Code: [AUSKLAPPEN] ;Timer mit 60 Hz (also 60mal pro sek) festlegen, kannst aber auch einen anderen Wert einsetzen Global timer# = CreateTimer(60) ;Anzahl der Schleifendurchläufe festlegen AnzahlDurchlaeufe = 500 ;Hauptschleife wiederholen solange KeyHit(1) also Esc gedrückt wird danach Programm beenden While Not KeyHit(1) ;die Schleife wo die Rechtecke gezeichnet werden For i = 1 To AnzahlDurchlaeufe ;Verzögerung durch Timer erzeugen damit man das Zeichnen an sich auch sieht, ;wenn du die Zeile weg lässt, dann erscheint die Linie einfach scheinbar in einem Schritt WaitTimer(timer#) ;Rechteck zeichnen, i wird als x-Wert des Rechtecks genutzt und wird pro Durchlauf um 1 erhöht Rect(i, 235, 5, 5) ;Schleifenende Next ;Hauptschleifenende Wend End |
||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, DrFugazi hat Recht mit seinem Code. Und wenn du willst, dass deine Linie länger wird, dann erhöhst du einfach den vorletzten Wert dementsprechend.
Problematisch wenns dann nur "wie bei Snake" sein soll, dann geht das ganze nicht mehr so einfach (um Ecken bewegen). @ DrFugazi, was mir bei deinem Code noch aufgefallen ist: Zitat: ;Hauptschleife wiederholen solange KeyHit(1) also Esc gedrückt wird danach Programm beenden
Sollte wohl eher: Zitat: ;Hauptschleife wiederholen bis KeyHit(1) also Esc gedrückt wird danach Programm beenden
heißen. Sorry, ist mir nur aufgefallen. Lg, M0rgenstern |
||
sycron |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dankeschön, sowas wollte ich haben:-), mal sehen obs mir jetzt weiterhilft | ||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
warum malst du die Linie immer komlpett durch , wenn du den Buffer eh nicht clearst ?
Der Code ist nicht schön. BlitzBasic: [AUSKLAPPEN]
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. |
DrFugazi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mein Code ist auch nicht schön, aber ein Lösungsansatz für das Problem.
Ich wollte Sycron nur die ungefähre Richtung zeigen. Sieh' es einfach als "Skizze" @M0rgenstern: Du hast natürlich recht ![]() |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
DrFugazi,
war ja nicht persönlich gemeint. als skizze ist dein code sogar sehr gut geeignet ;D Greez 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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group