programm hängt rechner auf
Verfasst: 06.08.2005 15:29
Hi
ich hab mir ein Programm kopiert, um in einem Spiel den Highscore eingeben zu können.
Das kopierte Programm funktioniert auch astrein.
Wenn ich es aber in mein Programm integrieren will, hängt sich bei jedem Versuch mein Rechner auf und ich muss neu booten. :-( extrem lästig.
Jetzt 2 Fragen:
1. Was ist an meinem Programm falsch? siehe unten (Wahrscheinlich irgendein bescheuerter Anfängerfehler.)
2. Wie kann man verhindern, dass man bei solchen Fehlern ständig neu booten muss?
Danke
Thomas
[/code]
ich hab mir ein Programm kopiert, um in einem Spiel den Highscore eingeben zu können.
Das kopierte Programm funktioniert auch astrein.
Wenn ich es aber in mein Programm integrieren will, hängt sich bei jedem Versuch mein Rechner auf und ich muss neu booten. :-( extrem lästig.
Jetzt 2 Fragen:
1. Was ist an meinem Programm falsch? siehe unten (Wahrscheinlich irgendein bescheuerter Anfängerfehler.)
2. Wie kann man verhindern, dass man bei solchen Fehlern ständig neu booten muss?
Danke
Thomas
Code: Alles auswählen
#Nein = 0
#Ja = 1
#False = 0
#True = 1
;- Geometrie #############################################################
#Bildschirm_hoehe = 600
#Spielfeld_x = 0
#Spielfeld_y = 0
#Spielfeld_hoehe = 500
#Spielfeld_breite = 800
level=2
; -------------------------------------------------------------------------------
Procedure OEscapeKeyHit()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
ProcedureReturn 1
EndIf
ProcedureReturn 0
EndProcedure
; -------------------------------------------------------------------------------
Procedure.s InputProcedure(x,y)
Static Name$, LastCursorTime, ShowCursor, BackPushed
While 1
; Input holen
Name$ + KeyboardInkey()
; Backspace erlauben zum loeschen
If KeyboardPushed(#PB_Key_Back) And BackPushed=0
Name$ = Left(Name$,Len(Name$)-1)
BackPushed=ElapsedMilliseconds()
ElseIf BackPushed
If ElapsedMilliseconds() >= BackPushed+150
BackPushed=0
EndIf
EndIf
; Laenge begrenzen
len=Len(Name$)
If len>25
Name$ = Left(Name$,len-1)
EndIf
; Fenster zeichnen
If StartDrawing(ScreenOutput())
Box(x+5,y+5,300,100,$404040)
Box(x,y,300,100,$D7D628)
Box(x,y,300,22,$579FA8)
Line(x ,y,300, 0,$FFFFFF):Line(x,y , 0,100,$FFFFFF)
Line(x+300,y, 0,100,$000000):Line(x,y+100,300, 0,$000000)
Locate(x+2,y+2)
DrawingMode(1)
DrawText("Bitte Name eingeben")
Box(x+09,y+29,282,24,$000000)
Box(x+10,y+30,280,22,$FFFFFF)
Locate(x+13,y+33)
DrawText(Name$)
; cursor blinken lassen
time = ElapsedMilliseconds()
If time >= LastCursorTime+500
LastCursorTime=time
ShowCursor ! 1
EndIf
; cursor zeichnen
If ShowCursor
;Line(x+13+TextLength(Name$),y+32,0,18,$000000)
Line(x+13+TextLength(Name$),y+50,10,0,$000000)
EndIf
StopDrawing()
EndIf
If KeyboardReleased(#PB_Key_Return) And Name$
ProcedureReturn Name$
EndIf
Wend
EndProcedure
;
; -------------------------------------------------------------------------------
Procedure OShowFinishScreen()
Shared Gesamtzeit
StartDrawing(ScreenOutput())
DrawingMode(1)
Box(0, 0, #Spielfeld_breite, #Bildschirm_hoehe)
Locate(360, #Bildschirm_hoehe/2 ): DrawText("Geschafft..")
Locate(360, #Bildschirm_hoehe/2+30 ): DrawText("Verbrauchte Zeit: " + Str(Gesamtzeit) + " Sekunden" )
StopDrawing()
FlipBuffers()
EndProcedure
; -------------------------------------------------------------------------------
Procedure OCheckIfGameFinished()
Shared Startzeit, Gesamtzeit, level
Protected Name$, Status
Repeat
ExamineKeyboard()
If IsScreenActive()
FlipBuffers()
ClearScreen($3A,$65,$98)
If Status = 0
Name$ = InputProcedure(#Spielfeld_breite/2-150,#Spielfeld_hoehe/2-50)
If Name$
Status+1
EndIf
Else
If StartDrawing(ScreenOutput())
FrontColor($FF,$FF,$FF)
DrawingMode(1)
Locate(100,100): DrawText("Ihre Eingabe:")
Locate(100,130): DrawText("Vielen Dank! Bitte drcken sie eine Taste...")
FrontColor($00,$00,$00)
Locate(200,100): DrawText(Name$)
StopDrawing()
EndIf
If KeyboardPushed(#PB_Key_All)
Quit=#True
EndIf
EndIf
EndIf
Until Quit
CloseScreen()
End ; Programm beenden
EndProcedure
If InitSprite()=0 Or InitKeyboard()=0
MessageRequester("ERROR","Cant initialize game engine!"):End
EndIf
OpenScreen(1024,768,16,"Ballerkurs")
OCheckIfGameFinished()