Problem mit Grafiken anzeigen sowie Text ausdrucken

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Hannes1995

Betreff: Problem mit Grafiken anzeigen sowie Text ausdrucken

BeitragSo, Sep 09, 2007 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo !
Ich 'hab mir ein kleines RPG gebastelt doch dann kam ein Fehler: BlitzBasic druck 2 Bilderr und Text nicht aus.
Hier der Code ,,Was ist Falsch daran ?":
Code: [AUSKLAPPEN]
Graphics 1024,768,32,1

;Laden von allen Daten
bg=LoadImage("bg.jpg")
tileset=LoadAnimImage("tileset.bmp",32,32,0,5)
char=LoadImage("char.bmp")
load=LoadImage("neon1.bmp")
speak=LoadImage("speak.jpg")
foto=LoadImage("hannes.jpg")

MaskImage char,255,255,255

;
SetBuffer BackBuffer()
Cls
DrawImage load,300,354
Flip

Locate 450,325
Print "Laden..."
Delay 6000

SetBuffer BackBuffer()
Cls
Flip

Locate 450,325
Print "Laden erfolgreich ! Bitte drücken Sie eine Taste."
WaitKey

SetBuffer BackBuffer()
Cls
DrawImage bg,0,0
Flip

Color 255,255,0
Print "Willkommen!"

Global name$=Input$("Wie heißt du? ")

SetBuffer BackBuffer()
Cls
DrawImage bg,0,0
Flip

Select name$
Case "Hannes" 
Print "Mein Gebieter! Mein Schöpfer! Ich hätte Sie hier nicht erwartet. "
Default
Print "Hallo " +name+  "! Schön dich kennen zu lernen ! "
End Select

Global alt=Input("Wie alt bist du ?")

SetBuffer BackBuffer()
Cls
DrawImage bg,0,0
Flip

Print "Aha. Du bist also " +alt+ " Jahre alt."

Delay 2000

SetBuffer BackBuffer()
Cls
DrawImage bg,0,0
Flip

Print name+ " , was möchtest du tun ?"
Local tun=Input("1 - Adventure starten  2 - Spielstand laden  3 - Beenden ")

SetBuffer BackBuffer()
Cls
DrawImage bg,0,0
Flip

Select tun
Case "1"
Print "Dann kann es ja los gehen !"
Gosub Spielstart
Case "2"
Print "Spielstand wird geladen."
Case "3"
Print "Das Programm wird beim nächsten Tastendruck beendet."
Default
Print "Ungültige Eingabe"
Delay 1000
End
End Select

.Spielstart

PlayMusic("fröhlich.mid")

SetBuffer BackBuffer()
DrawImage speak,200,610
DrawImage foto,0,620

Color 255,0,0
Locate 240,620
Print "Hallo, und Herzlich Willkommen zu .......!"

Flip

SetBuffer BackBuffer()
;die benötigten variablen
Global ppx = 10*32 ;X-Position des Charackters
Global ppy = 7*32  ;Y-Position des Charackters
Global py = 7      ;Kollisions X-Position des Charackters
Global px = 10     ;Kollisions Y-Position des Charackters
Global scrolly     ;Die Variable für die ScrollY-Position
Global scrollx     ;Die Variable für die ScrollX-Position
;die map-array
Dim map(20,20)
;die Karte
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,4
Data 4,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,4
Data 4,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
;einlesen und die zahlen der Tiles in der array speichern
For y = 0 To 20
For x = 0 To 20
;einlesen der werte aus der data map in die array
Read map(x,y)
Next
Next
;start der hauptschleife
Repeat
;unnütze graficreste löschen
Cls
;esc-taste zum beenden abfragen
If KeyDown(1) Then Exit
;die 20*20 tiles große map laden
For x = 0 To 20
For y = 0 To 20
;malt die karte an der positon x*32,y*32 und man kann die variablen scrollx und scrolly
;von außen manipulieren, um so scrolling zu erzeugen
DrawBlock tileset,x*32-scrollx,y*32-scrolly,map(x,y)
Next
Next
;malt den charackter den du steuerst
DrawImage char,ppx-scrollx,ppy-scrolly

Text 0,0,py
Text 0,20,px
;_____________________Bewegungsrutinen für die einzelnen pfeil-tasten________________________________

;diese rutinen funcktionieren ganz einfach, solange aa größer 0 ist bleiben sie
;acktiv und es wird gescrollt
;pfeilrunter-taste
If move = 1 Then
;wenn der wert aa größer 0 ist wird fortgesetzt
If aa > 0
;solange der wert aa größer 0 ist wird um 2 pixel weiter gescrollt
scrolly = scrolly + 2
;die sichtbare figur wird bewegt
ppy = ppy + 2
;die variable xo wird solange aa > 0 ist erhöht
xo = xo + 1
;wenn xo den wert 16 erreicht hat wird aa wieder auf 0 gesetzt und der kollisionsparameter
;py wird verändert, danach wird xo wieder auf 0 gesetzt
If xo = 16 Then aa = 0:py = py + 1:xo = 0
End If
End If

;pfeilhoch-taste
If move = 2 Then
If aa > 0
scrolly = scrolly - 2
ppy = ppy - 2
xo = xo + 1
If xo = 16 Then aa = 0:py = py - 1:xo = 0
End If
End If
;pfeillinks-taste
If move = 3 Then
If aa > 0
scrollx = scrollx - 2
ppx = ppx - 2
xo = xo + 1
If xo = 16 Then aa = 0:px = px - 1:xo = 0
End If
End If
;pfeilrechts-taste
If move = 4 Then
If aa > 0
scrollx = scrollx + 2
ppx = ppx + 2
xo = xo + 1
If xo = 16 Then aa = 0:px = px + 1:xo = 0
End If
End If

;rechs-taste
If KeyDown(205) Then
;kollision checken, wie ihr es schon kennt
If map(px+1,py) < 1 Then
;der nächste tastatur-eingabe-impuls wird möglich sobald aa weniger als 1 wert ist
;das heißt in der zeit wo keine tastatur-eingabe erfolgen kann wird zur zeit gescrollt
If aa < 1 Then
;die scrollrutine move = 4 wird aufgerufen
move = 4
;aa nimmt den wert 1 an dadurch kann man erst wieder auf eine taste drücken, wenn
;aa < 1 wird
aa = 1
End If
End If
End If

;lings-taste
If KeyDown(203) Then
;kollision checken, wie ihr es schon kennt
If map(px-1,py) < 1 Then
If aa < 1 Then
move = 3
aa = 1
End If
End If
End If

;oben-taste
If KeyDown(200) Then
;kollision checken, wie ihr es schon kennt
If map(px,py-1) < 1 Then
If aa < 1 Then
move = 2
aa = 1
End If
End If
End If

;unten-taste
If KeyDown(208) Then
;kollision checken, wie ihr es schon kennt
If map(px,py+1) < 1 Then 
If aa < 1 Then
move = 1
aa = 1
End If
End If
End If
;flippen und zurück zum Anfang der Hauptschleife
Flip
Forever
;Images wieder freigeben
FreeImage tileset
FreeImage char

WaitKey
End


Brauche möglichst schnell Hilfe !

Mfg,
Hannes

Lunatix

BeitragSo, Sep 09, 2007 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Du weisst schon, das du äussert unverschämt rüberkommst?

"Hier ist der code, helft mir mal! Und n bisschen Zackig !! Schliesslich seid ihr nur dafür da mir zu helfen!" Rolling Eyes

An welcher stelle ist denn der fehler... hier haben glaub 99% der leute keine Lust sich 500 zeilen code reinzuziehen...
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

BladeRunner

Moderator

BeitragSo, Sep 09, 2007 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Du benutzt Setbuffer falsch - es reicht den Buffer einmal auf Backbuffer zu setzen, dann ist das solange so bis Du es ausdrücklich wieder änderst.
Desweiteren ist print nicht Backbuffer-Kompatibel, denn es benutzt immer den Frontbuffer. Text ist hier das Kommando der Wahl.
Als drittes: Dein Code ist nur schlecht nachzuvollziehen, Da du weder einrückst noch sonderlich aussagekräftige Variablennamen benutzt.
Viertes Problem ist dass nicht genau ersichtlich ist welche Grafik Du meinst, und dass man den Code ohne Media nur begrenzt testen kann.
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

Hannes1995

Betreff: OK Thx

BeitragSo, Sep 09, 2007 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok THX Blade Runner und Junkprogger !
Aber es klappt immer noch nicht.
Auch nicht als ich den Set Buffer weggenommen habe.
Print schreibt er immer noch nicht obwohl er im Frontbuffer schreiben sollte.
Trotzalledem,
Thx

mas93

BeitragSo, Sep 09, 2007 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will echt nix sagen, aber genau wie du oben gschrieben hast:
Ich hab mir ein kleines RPG GEBASTELT.

Ich kenn den Code. Ich hab nämlich auch die tutorials von der robsite gelesen.
Und ich kann nur sagen, dass alles außer den texten am anfang 1 zu 1 kopert ist Rolling Eyes
Das soll jetzt kein Vorwurf sein, sondern ein tipp.

Wenn du nur 1 zu 1 kopierst wird das nix.

und wenn du schon seit einem jahr proggst und schon ganz gut dabei bist ->https://www.blitzforum.de/foru...p;start=60

dann bin ich mir sicher, dass du das auch alleine besser hinbekommst.
Ich dachte am anfang auch immer: Ja gebt mal alle her mit dem code.Aber so lernst dus nicht...

Wie gesagt, nur ein Tipp.

und jetzt noch was back to topic:

Ich würde vermeiden den buffer dauernd hin und her zu "flippen".
Das muss ja in nem chaos enden.
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group