Antwort schreiben  Thema schreiben 
Verfasser Nachricht
CChako
Experte
****


Beiträge: 621
Gruppe: User
Registriert seit: Dec 2011

Status: Abwesend
Danke erhalten: 381
Beitrag: #1
Question  [Lua] - Problem

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

15.02.2012 19:25
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
CChako
Experte
****


Beiträge: 621
Gruppe: User
Registriert seit: Dec 2011

Status: Abwesend
Danke erhalten: 381
Beitrag: #2
xPSP  RE: [Lua] - Problem

Push

03.03.2012 22:11
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neutrosider
Developer
*


Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010

Status: Offline
Danke erhalten: 2325
Beitrag: #3
xPSP  RE: [Lua] - Problem

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.





GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)

Dieser Beitrag wurde zuletzt bearbeitet: 03.03.2012 22:52 von Neutrosider.

03.03.2012 22:51
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang