Permalänk
Medlem

pygame - ta bort text - hur?

Hej hej,

behöver lite mera hjälp med mitt projektarbete, igen...

Jag har gjort så att när man med musen trycker inom ett visst område så ändras en variabel, och i fönstret skrivs variabeln ut.

När man trycker inom området, så ändras variabeln som den ska och den skrivs också ut som den ska. Men det gamla värdet som stod tas inte bort, så när man trycker så skrivs det hela tiden ut nya värden utan att det gamla tas bort, så det blir bara en stor svart smörja efter ett par klick.

Hur gör man för att rensa bort den gamla texten?

Såhär ser det ut nu (bry er inte om variabelnamnen jag vet att dem har dumma namn):

if x > 520 and x < 630 and y > 10 and y < 85: mettnadsprocent = mettnadsprocent + 5 respektprocent = respektprocent - 2 print "------------------------------" print print "Mettnadsprocent = ", mettnadsprocent print print "Respektprocent = ", respektprocent print print "------------------------------" if pygame.font: font = pygame.font.Font(None, 78) text = font.render(str(mettnadsprocent) + "%", 1, (10, 10, 10)) textpos = text.get_rect( centerx = 300, centery = 50) background.blit(text, textpos) screen.blit( background, (0,0) ) screen.blit( character, characterRect ) pygame.display.flip()

Hoppas ni förstår vad det är jag vill ha sagt!

Visa signatur

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem

Jag tror det blir så för att du inte ritar om bakgrunden mellan varje klick. Om du inte vill rensa hela bakgrunden innan varje refresh kan du måla en fyrkant med samma dimensioner som den gamla texten och bakgrundens bakgrundsfärg, som du blittar till background innan du blittar texten.
Det snyggaste tycker jag är att rensa hela bakgrunden för varje frame i nån sorts repaint-metod..

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Jo, att bara måla över det gamla var något jag hade kanske tänkt, att rensa hela bakgrunden vet jag att jag har sett någonstans men mina google-sökningar har inte gett något resultat. Någon som kanske vet hur det går till?

Visa signatur

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem

Har inte så mycket med själva problemet att göra, men du kan "förenkla" (ser lite snyggare ut iallafall) if-satsen m.h.a att det går att skriva:

if 520<x<630 and 10<y<85:

i python. Men det är väl lite av en smaksak.

Permalänk
Medlem

jo de e klart... Det skulle man ju kunna göra

Visa signatur

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem

Rensa bakgrunden gör du med Fill-metoden: http://www.pygame.org/docs/ref/surface.html#Surface.fill

(I pygame är en stor bild "dyrare" att rita om än en liten bild. Så om man bara ändrar på en liten bit av skärmen mellan varje frame kan det vara mer prestandaeffektivt att bara rita om den lilla biten, så att rita över med en svart ruta bara på den lilla biten man ändrat är inte så dumt som det kanske låter. Men om det bara är en liten text som i ditt exempel hade jag gjort en fill först och sen ritat om texten, koden brukar bli enklare om man bara rensar allt för varje frame och sen ritar om det)

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon