KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: [Lua] - Problem
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich bin verzweifelt... ^^
Ich habe heute angefangen ein Spiel zu scripten, ich bin auch weit gekommen aber jetzt habe ich ein Problem für welches ich keinen Lösungsansatz habe...

Also so sieht das Spiel aus:

Es ist Tic Tac Toe ^^
Aber wenn ich die X Taste drücke erscheint das Bild mit dem Kreuz nur sehr kurz und verschwindet wieder....
Ich hoffe ihr könnt mir helfen Big Grin

Spoiler da über 200 Zeilen ^^ (anzeigen)
mfg
Push
also:
ich gehe davon aus dass der weisse Hintergrund zum bild field gehört. wenn du jetzt mal nur die zeichenzeilen beachtest, steht da folgendes:

PHP-Code:
while true do
    
pad Controls.read()
    ...
    
screen:blit(0,0,field,true)
    if 
pad:cross() and oldpad:cross() ~= pad:cross() and current_player == 1 then
        screen
:blit(current_field_x,current_field_y,cross,true)
        ...
        
screen.flip()
    
end
    
...
    
screen.waitVblankStart()
    
screen.flip()
    
oldpad pad
end 


gehen wir das mal für 4 frames duch. im ersten frame ist nichts gedrückt:

Dann wird das Feld (mit dem weissen hintergrund der dafür sorgt dass man kein bild was dahinter ist sieht)


im näcshten frame wird x gedrückt. auch hier wird einfach erstmal nur alles mit dem feld-bild "überschrieben".

im nächsten frame wird x losgelassen. jetzt wirds spannend. erst wird wieder alles mit dem weissen spielfeld überschrieben. Dann aber ist die if-bedinung mit der x-taste erfüllt, und nun wird das x aufs spielfeld gezeichnet und wegen dem screen.flip() sieht man es dann aufm bildschirm

jetzt, im 4. frame, ist x auch nichtmehr gedrückt, die if-bedingung ist nicht erfüllt.
an dieser stelle wird wieder das gesamte bild aufm bildschirm erstmal mit dem weissen spielfeld überschrieben. an dieser stelle sieht man dann das x nichtmehr, da es hinter dem spielfeld-bild ist.

Und das ist der Grund warum du das X nach dem drücken nur genau einen frame lang siehst.

Du kannst das Problem umgehen, wenn du das zeichnen des spielfeld-bildes direkt vor die while schleife setzt, und aus der while schleife rausnimmst. dann wird es nicht immer wieder neu gezeichnet und überschreibt nicht alles.

Referenz-URLs