Wo liegt der Fehler?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Burnser

Betreff: Wo liegt der Fehler?

BeitragFr, Feb 03, 2006 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ich habe vor ein paar Tagen begonnen mit bb zu programmieren also die grundkenntisse ahabe ich schon durhc weil ich vorhher qbasic gelernt habe...
nur jetzt wollte ich mich an die Grafik setzen.

Mein Ziel war es ein bild auszugeben.

naja dem ist nicht so.

ich weis aber nicht warum...

hier mal der code ich hofe ihr koennt mir helfen:

Code: [AUSKLAPPEN]
Graphics 800,600,16,1
Graphics 800,600,16,1
SetBuffer BackBuffer()
flamme = LoadImage"/flame2.bmp"
DrawImage flamme 65,65
WaitKey
End



mfg burnser
 

Dreamora

BeitragFr, Feb 03, 2006 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Du brauchst nur ein Graphics
2. Wenn du setbuffer backbuffer verwendest, musst du nach dem du alles gezeichnest hast / gerendert hast "flip" verwenden, damit der Backbuffer angezeigt wird und der jetzige Frontbuffer zum Backbuffer für neue Zeichenoperationen wird.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Feb 03, 2006 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 800,600,16,1
SetBuffer BackBuffer()
flamme = LoadImage("/flame2.bmp") ;< in Klammern setzten da sonst kein Rückgabewert übermittelt wird
DrawImage flamme, 65,65 ;Hier fehlte ein Komma
; und da du den backbuffer aktiviert hast mußt du auch noch den Bildschirm Flipen
Flip
WaitKey
End
[BB2D | BB3D | BB+]
 

Burnser

BeitragFr, Feb 03, 2006 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für die schnellen antworten ich werde nun mal versuchen bewegung in das prog zu bringen.

mfg burnser
 

Burnser

BeitragFr, Feb 03, 2006 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
so da wäre schon die nächste hürde.

bild eingefügt klar, und jetzt will ich bei druck auf 205 also pfeiltaste nach rechts, dass sich die grafik anchrecht sbewegt also

bewegung = 1 das dieser wert + die x koordinate die ja schon oben vorgegeben ist...
aber irgend wie springt das prog an abei druck auf die taste geht es gleich zu statt in die richtung zu wandern... ;(

Code: [AUSKLAPPEN]
Graphics 800,600,16,1
SetBuffer BackBuffer()
flamme = LoadImage("flame2.bmp") ;< in Klammern setzten da sonst kein Rückgabewert übermittelt wird
x = 1
y = 1
bewegung = 1
DrawImage flamme, x,y ;Hier fehlte ein Komma
Flip
If KeyDown(205) Then x= x + bewegung;rechte feiltaste
WaitKey
End


mfg burnser

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Feb 03, 2006 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 800 ,600,16,1
SetBuffer BackBuffer ()
flamme = LoadImage ("flame2.bmp") ;< in Klammern setzten da sonst kein Rückgabewert übermittelt wird
x = 1
y = 1
bewegung = 1

Repeat
    DrawImage flamme, x,y ;Hier fehlte ein Komma
    Flip
    If KeyDown (205) Then x = x + bewegung;rechte feiltaste
Until x > 800 Or KeyHit (1)

;WaitKey
End

nachdem der x Wert geändert wurde hält das Programm an!
Du mußt das innerhalb eine Schleife laufen lassen um es immer wieder anzuzeigen!
Schau dir mal einige tuts auf der Robsite an, da ist das ziemlich gut beschrieben!
[BB2D | BB3D | BB+]
 

Burnser

BeitragFr, Feb 03, 2006 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
hi also klappt super kann mitlerweile die sonne also flame2.bmp in alle richtungen bewegen. nur wird sie ständig dargestellt immer 1 pixel weiter das bild also zieht sie sich sozusagen das ganz viele sonnen auf eiandaer überlappt folgen.

wie ändere ich das??

hier mal der aktuelle code:
Code:
Graphics 1024,768,32,1
SetBuffer BackBuffer()
flamme = LoadImage ("flame2.bmp") ;< in Klammern setzten da sonst kein Rückgabewert übermittelt wird
x = 1
y = 1
bewegung = 5


For zaehler = 1 To 1000

x = Rnd(0, 1024)
y = Rnd(0, 768)

Plot x, y

Next
Repeat
DrawImage flamme, x,y ;Hier fehlte ein Komma
If KeyDown (205) Then x = x + bewegung
If KeyDown (208) Then y = y + bewegung
If KeyDown (203) Then x = x - bewegung
If KeyDown (200) Then y = y - bewegung
Flip
Until y > 702 Or x > 958 Or y < 1 Or x < 1 Or KeyHit (1)
WaitKey
End


PS: habe noch nen sternen himmel hinzugefügt Smile)

mfg burnser

sirokuhl

BeitragFr, Feb 03, 2006 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
du schreibst
if keydown(205) ...
waitkey

das if keydown(205) ... beachtet er nicht weil keine taste gedrückt wurde
dann kommt er zu waitkey.
wenn du dann die taste drückst läuft das programm weiter und das end kommt drann worauf es beendet wird.
du musst also wie einen eintrag drüber eine schleife benutzen in der dann aber auch dass bild immer wieder gelöscht und an die neue position gezeichnet werden muss

D2006

Administrator

BeitragFr, Feb 03, 2006 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

MfG
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Markus2

BeitragFr, Feb 03, 2006 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Repeat
CLS ;<---
DrawImage flamme ...
 

Burnser

BeitragFr, Feb 03, 2006 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
also jetzt klappt allles einwansfrein aber nur die sonne kann über den rand hinaus und das is ja blöd wie mache ich es das sie beim bild schrimrand stoppt? also ich hatte es vorhin wenn sie den bild schrimrand berüht das das progg dann beendet aber wenn man nen shooter schrei9bt isst das ja saehr unvorteilhaft... als die saonne soll nur nicht über den rand kommen sollen nur wie?

Code:
Code: [AUSKLAPPEN]
Graphics 1024,768,32,1
SetBuffer BackBuffer()
flamme = LoadImage ("flame2.bmp") ;< in Klammern setzten da sonst kein Rückgabewert übermittelt wird
x = 1
y = 1
bewegung = 5
Repeat
Cls
DrawImage flamme, x,y ;Hier fehlte ein Komma
If KeyDown (205) Then x = x + bewegung
If KeyDown (208) Then y = y + bewegung
If KeyDown (203) Then x = x - bewegung
If KeyDown (200) Then y = y - bewegung
Flip
Until KeyHit (1)
WaitKey
End



mfg burnser

aMul

Sieger des Minimalist Compo 01/13

BeitragFr, Feb 03, 2006 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Nichts gegen dich, aber du lernst wenig, wenn du dir alle Lösungen von anderen geben lässt.

Probiers mal allein Wink

Ein Denkanstoß:
Du musst x und y kontrolieren...Wink
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
 

Burnser

BeitragSa, Feb 04, 2006 0:25
Antworten mit Zitat
Benutzer-Profile anzeigen
aMul hat Folgendes geschrieben:
Nichts gegen dich, aber du lernst wenig, wenn du dir alle Lösungen von anderen geben lässt.

Probiers mal allein Wink

Ein Denkanstoß:
Du musst x und y kontrolieren...Wink


naja stimmt schonich frage gerne und lasse es gerne andere machen^^

naja habe dann mal überlegt aber die antowrt war mehr als simpel.
ich wollte noch ne schlieffe machen also 4 schleifen in einer und deswegen war ich völlig aus der spur... naja ne einfache if abfrage wenn der wert überschritten ist das es zurück zu dem und dem wert geht is sehr sehr simpel naja wers sehen möchte hier der code:

Code: [AUSKLAPPEN]

Graphics 1024,768,32,1
SetBuffer BackBuffer()
flamme = LoadImage ("flame2.bmp")
x = 1
y = 1
xmax = 65
ymax = 65
bewegung = 5
Repeat
Cls
DrawImage flamme, x,y
If KeyDown (205) Then x = x + bewegung
If KeyDown (208) Then y = y + bewegung
If KeyDown (203) Then x = x - bewegung
If KeyDown (200) Then y = y - bewegung
If x > 1024 - xmax Then x = 1024 - xmax
If x < 1 Then x = 1
If y > 768 - ymax Then y = 768 - ymax
If y < 1 Then y = 1
Flip
Until KeyHit (1)
WaitKey
End






PS: Wenn ich das prog im compiller also im ide starte funzt es super aber wenn ich eine exe erstelle dann will das programm nie und es steht dort:
Memory acces violation

was bedeutet das und wie bringe ich es zum laufen als exe??



mfg burnser

Markus2

BeitragSa, Feb 04, 2006 0:35
Antworten mit Zitat
Benutzer-Profile anzeigen
erstellst du die exe da wo auch das Bild ist ?
 

Burnser

BeitragSa, Feb 04, 2006 2:27
Antworten mit Zitat
Benutzer-Profile anzeigen
jo hattes schon bemerkt... ich dachte die exe enthält auch das bild weil 1,25 mb für ein paar zeilen text...

naja geht alles super danke...


mfg burnser

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group