1.Problem mit Fortsetzen der Laufschrift/2.Problem mit Figur

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Quäiny

Betreff: 1.Problem mit Fortsetzen der Laufschrift/2.Problem mit Figur

BeitragFr, Apr 11, 2008 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab ein Problem, sobald ich enter klicke, bleibt alles stehen die schrift läuft nicht mehr von links nach rechts bzw. von rechts nach links und die farbe ändert sich nicht mehr, das ist ziemlich blöd. was muss ich schreiben damit das laufend flüssig weiter läuft??(das ist der 1.Code)

...bei 2.Code kann die Figur nach rechts gehen und auch stehen bleiben. das läuft reibungslos.doch wenn ich nach links klicke, zeigt er "illigall memory adress" an.ich versteh nicht warum!!!

Bei Vorschlägen irgendwelche Befehle kürzer zu schreiben, würde ich mich sehr freuen!!!

Code: [AUSKLAPPEN]
Graphics 1280, 1024
SetBuffer BackBuffer()

;Dateien hochladen
Global Hintergrund=LoadImage("hintergrund.bmp")
Global font=LoadFont("chiller.ttf",120)
Global bickley=LoadFont("Bickley script.TTF",170)
Global bikley=LoadFont("Bickley script.TTF",50)
Global arial=LoadFont("arial.ttf",30)
Global harlow=LoadFont("harlow solid italic.ttf",50)
Global hintergrundmusik=LoadSound("Homis.wav")
Global counter;damit counter auch anzezeigt wird

;#####################################################
;Funktionen (Verlinkungen)



Function steuerung()
Repeat
If KeyHit(28) Then flag =1-flag
If flag=1 Then
If counter = 3 Then
Text 710,540, ("--->Steuerung")
Text 860,640,("Musik")
 EndIf
EndIf

Flip
Until KeyHit(28)
End Function 


LoopSound hintergrundmusik
channel=PlaySound (hintergrundmusik)


;####################################################
;damit sich Schrift bewegt



Local x=2
Local s=2
Local c=-2
Local t=900



Repeat



If KeyHit(28) Then steuerung

Color 255,100,0

TileImage hintergrund
SetFont font


kh=KeyDown(208) And KeyDown(200)





;Farbe verändern
rgb = rgb + rgbplus
If rgb = 0 Then rgbplus = -5
If rgb = 255 Then rgbplus = 5



; Die Umrandung malen
Color 164 - rgb, 117 - rgb, 94 - rgb
Rect rectx - 2, recty - 2, laenge + 4, 90, 1
Color rgb, rgb, rgb
Rect rectx, recty, laenge, 86, 1


If KeyHit (208)
counter =counter + 1
EndIf
If KeyHit (200)
counter =counter - 1
EndIf


If counter >6 Then counter = 1
If counter <1 Then counter = 6
;;; Highscoore zeigen
If counter = 2 And kh Then game= 1
If counter = 3 And kh Then game=1 
If counter = 4 And kh Then game= 1 ;;; game starten
If counter = 5 And kh Then Beenden=1;;; game beenden
If counter = 6 And kh Then ende=1
If counter = 1 And kh Then viewhiscore=1


Color 255,100,0
Text 400,340, "Neues Spiel"
Text 400,440, "Spiel laden"
Text 440,540, "Optionen"
Text 500,640, "Hilfe"
Text 400,740, "Mitwirkende"
Text 450,840, "Beenden"

Select counter
Case 1
rectx = 570 - (Len("Neues Spiel") * 32 / 2) - 10
recty = 350
laenge = Len("Neues Spiel") * 32 + 20
Case 2
rectx = 570 - (Len("Spiel laden") * 32 / 2) - 10
recty = 450
laenge = Len("Spiel laden") * 32 + 20
Case 3
rectx = 570 - (Len("Optionen") * 32 / 2) - 10
recty = 550
laenge = Len("Optionen") * 32 + 20
Case 4
rectx = 570 - (Len("Hilfe") * 32 / 2) - 10
recty = 650
laenge = Len("Hilfe") * 32 + 20
Case 5
rectx = 580 - (Len("Mitwirkende") * 32 / 2) - 10
recty = 750
laenge = Len("Mitwirkende") * 32 + 20
Case 6
rectx = 580 - (Len("Beenden ") * 32 / 2) - 10
recty = 850
laenge = Len("Beenden ") * 32 + 20
End Select


x = x+s
If x = 2 Or x =420

s = 0
EndIf
Text x,30, "Die Homis"


t=t+c
If t=400 Or t=900
c=0
EndIf
Text t,120,"in Belleville"

Flip
 
Until KeyHit(1)


Code: [AUSKLAPPEN]

Graphics 800, 600, 16, 2
SetBuffer BackBuffer()



;Variable BILD muss nur einmal mit dem Handle vom Image geladen werden
bild = LoadAnimImage("figur2.bmp", 15, 35, 0, 4)
bild2 = LoadAnimImage("figur3.bmp", 15, 35, 0, 4)

;Auch MaskImage bleibt erhalten und muss nicht in einer Schleife wiederholt werden
MaskImage bild, 0, 255, 0

;Hier wird (wie von Xeres beschrieben) eine Framebegrenzung eingestellt
timer=CreateTimer(5)




While Not KeyHit(1)


If KeyDown (205) n=(n+5) Mod 4 x=x+5
DrawImage bild2, x, 100,n
If KeyDown(203) n=(n-5) Mod 4 x=x-5
DrawImage bild, x, 100,n




Color 0,0,0

If KeyDown(203)=0 And KeyDown(205) = 0 Then
EndIf


Rect 0,254, 800, 300 ,1
;Hier wird auf Maximal der eingestellten Framebegrenzung gewartet
WaitTimer(timer)

;Filp mit 0 als Parameter wartet nicht mehr auf VSync und entlastet den Prozessor ENORM
Flip 0
Cls
Wend
End
  • Zuletzt bearbeitet von Quäiny am Fr, Apr 11, 2008 15:43, insgesamt einmal bearbeitet

hamZta

Administrator

BeitragFr, Apr 11, 2008 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ad Problem 1:

Wie im Chat besprochen würde ich das ganze so lösen:

Code: [AUSKLAPPEN]
Global flag = 0
Repeat
  If KeyHit(28) flag = 1 - flag
  If flag = 1 Then
    If counter = 3 Then
      Text 710,540, ("--->Steuerung")
      Text 860,640,("Musik")
    EndIf
  EndIf
Until KeyHit(1)
Blog.
 

Lador

BeitragFr, Apr 11, 2008 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu Problem2:

Bei mir steht da 'Image frame out of range' und nichts von 'Illegal memory address'. Hast du schon einmal an eine Richtige Bewegungsroutine gedacht? BladeRunner hat einmal etwas über animieren mithilfe von MilliSecs() geschrieben. Benutz doch mal die Forensuche.

Code: [AUSKLAPPEN]
If KeyDown(203)=0 And KeyDown(205) = 0 Then
EndIf


Erscheint mir unsinnig.

Code: [AUSKLAPPEN]
kh=KeyDown(208) And KeyDown(200)


Gibt es diese Schreibweise? Wenn man es dann mit 'If kh Then...' benutzt? Wäre neu für mich.

Mit einer 'richtigen' Bewegungsroutine meine ich:
-Animieren mit MilliSecs()
-statt 'n=(n+5) Mod 4 x=x+5' lieber 'n=n+1' und 'x=x+5' benutzen
-es nicht von einem Timer abhängig zu machen

Auch wenn das jetzt nur ein Test sein soll, denk da doch mal drüber nach.

MFG Lador

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group