我目前正在制作一款游戏,其中(目前)得分每秒增加1点。
但是,每当我运行程序时,使用我当前的代码(我相信每秒都会更改变量),文本不会改变。它只是保持在0。
这是我的代码:(我在这个问题中提供了文字来解释我的代码,比如评论。)
第1节:导入PyGame和其他标准程序代码。
import sys, pygame
from pygame.locals import *
pygame.init()
size = width, height = 800,500
screen = pygame.display.set_mode(size)
第2节:设置窗口标题和颜色变量。
pygame.display.set_caption("One Score (Created by - Not Really Working Lamp Productions:)")
WHITE = (255,255,255)
第3节:声明变量“得分”。我已经给它一个单独的代码示例,因为它与问题密切相关。
score = 0
第4节:填写屏幕并声明默认字体变量。
screen.fill (WHITE)
myfont = pygame.font.SysFont("monospace", 16)
第5节:免责声明文本(或者是请求文本,我不太确定。)
disclaimertext = myfont.render("Copyright, 2013, Not Really Working Lamp Productions.", 1, (0,0,0))
screen.blit(disclaimertext, (5, 480))
第6节:添加分数文本(可能是最重要的部分。)
scoretext = myfont.render("Score = "+str(score), 1, (0,0,0))
screen.blit(scoretext, (5, 10))
第7节:while循环(可能是最重要的部分。)
while 1:
for event in pygame.event.get():
pygame.display.flip()
if event.type == pygame.QUIT:sys.exit()
pygame.time.wait(100)
score = score + 1
那么我的代码在哪里放什么? (我需要屏幕不断更新分数,因为它从“while 1:”循环每秒都会改变。)
谢谢。
答案 0 :(得分:1)
我不确定pygame如何构造其逻辑,但通常while true
:游戏循环处理一些任务:
所以在你的while 1
循环中你应该这样做,按顺序(顺序非常重要)。
您希望确保处理来自用户的任何输入,更新游戏状态,然后将其呈现给用户!
基本的谷歌搜索告诉我你应该打电话
scoretext = myfont.render("Score = "+str(score), 1, (0,0,0))
screen.blit(scoretext, (5, 10))
循环的每次迭代
import sys
import pygame
from pygame.locals import *
pygame.init()
size = width, height = 800,500
screen = pygame.display.set_mode(size)
pygame.display.set_caption("testing")
myfont = pygame.font.SysFont("monospace", 16)
WHITE = (255,255,255)
score = 0
while True:
pygame.display.flip()
for event in pygame.event.get():
# I remove the timer just for my testing
if event.type == pygame.QUIT: sys.exit()
screen.fill(WHITE)
disclaimertext = myfont.render("Some disclaimer...", 1, (0,0,0))
screen.blit(disclaimertext, (5, 480))
scoretext = myfont.render("Score {0}".format(score), 1, (0,0,0))
screen.blit(scoretext, (5, 10))
score += 1
请注意,我填充屏幕并重新绘制每个循环:https://stackoverflow.com/a/1637386/1072724
您无法撤消写在另一个图形顶部的图形 超过你可以撤消一个粉笔插图绘制在顶部 在同一块板上的另一个粉笔插图。
通常在图形中完成的是你用它做什么 黑板 - 清除整个,下次只重绘你的东西 想留下来。