def gameOver(): font = pygame.font.SysFont('Candara', 30) score_text = font.render("Congrats you got " + str(score1) + str(score2) + " points!",4,(255,0,0)) screen.blit(score_text,(100,250)) pygame.display.flip() time.sleep(3) pygame.quit() sys.exit() 代码运行后,没显示文本怎么解决
时间: 2024-03-14 19:48:31 浏览: 177
在代码中,第3行的字体名称'Candara'可能不存在于你的电脑上。你需要使用已经存在于你的电脑上的字体名称。可以使用以下代码获取你电脑上可用的字体名称:
```python
import pygame
pygame.init()
fonts = pygame.font.get_fonts()
print(fonts)
```
输出的结果是一个字符串列表,包含所有可用的字体名称。选择一个你电脑上已经存在的字体名称,将其替换代码中的'Candara'。如果依然没解决问题,你可以检查score1和score2的值是否正确,并且确保程序能够正常退出。
相关问题
def Show(self): run = True clock = pygame.time.Clock() while run: clock.tick(self.FPS) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False elif event.type == pygame.MOUSEBUTTONDOWN: pos = event.pos gridpos = (int(round(event.pos[0] / (self.gridwidth + .0))), int( round(event.pos[1] / (self.gridwidth + .0)))) print(gridpos) if self.IsAccess(gridpos): self.AddCoin(gridpos, (0, 0, 0)) self.Draw_background() self.DrawSteps() pygame.display.update() else: continue self.GroupOf((0, 0, 0), self.whiteSteps) self.GroupOf((255, 255, 255), self.blackSteps) pos1 = self.BestPos(self.whiteSteps[0], self.blackSteps[0]) print(pos1) if self.GameOver(): time.sleep(3) os._exit(0) if pos1: self.AddCoin(pos1, (255, 255, 255)) self.Draw_background() self.DrawSteps() pygame.display.update() if self.GameOver(): time.sleep(3) os._exit(0) self.Draw_background() self.DrawSteps() pygame.display.flip()写注释然后返回
这段代码是一个方法 Show,它使用 Pygame 库来实现一个简单的游戏。具体来说,它包括一个游戏循环和一个事件处理循环。在游戏循环中,程序会调用 Pygame 的 clock.tick 方法来控制游戏帧率,然后等待事件的发生。在事件处理循环中,程序会处理 QUIT 事件和 MOUSEBUTTONDOWN 事件。如果是 QUIT 事件,程序会结束游戏循环,退出游戏。如果是 MOUSEBUTTONDOWN 事件,程序会获取鼠标点击的位置,并计算出对应的网格位置。然后,程序会检查该位置是否可以放置棋子,如果可以,就将一个黑色棋子放置在该位置,并更新步数。接下来,程序会从白色棋子和黑色棋子中找到最佳的下棋位置,并将一个白色棋子放置在该位置。最后,程序会更新游戏界面,检查游戏是否结束,并等待下一次事件的发生。
注释如下:
```
def Show(self):
run = True
clock = pygame.time.Clock()
while run: # 游戏循环
clock.tick(self.FPS) # 控制帧率
for event in pygame.event.get(): # 处理事件
if event.type == pygame.QUIT: # 如果是退出事件,结束游戏循环
run = False
elif event.type == pygame.MOUSEBUTTONDOWN: # 如果是鼠标点击事件
pos = event.pos # 获取鼠标点击位置
gridpos = (int(round(event.pos[0] / (self.gridwidth + .0))), int(round(event.pos[1] / (self.gridwidth + .0)))) # 计算网格位置
print(gridpos) # 打印网格位置
if self.IsAccess(gridpos): # 如果该位置可以放置棋子
self.AddCoin(gridpos, (0, 0, 0)) # 放置黑色棋子
self.Draw_background() # 更新游戏界面
self.DrawSteps() # 更新步数
pygame.display.update()
else:
continue
self.GroupOf((0, 0, 0), self.whiteSteps) # 将所有白色棋子分组
self.GroupOf((255, 255, 255), self.blackSteps) # 将所有黑色棋子分组
pos1 = self.BestPos(self.whiteSteps[0], self.blackSteps[0]) # 找到最佳下棋位置
print(pos1) # 打印最佳下棋位置
if self.GameOver(): # 如果游戏结束
time.sleep(3) # 等待 3 秒
os._exit(0) # 退出游戏
if pos1: # 如果有最佳下棋位置
self.AddCoin(pos1, (255, 255, 255)) # 放置白色棋子
self.Draw_background() # 更新游戏界面
self.DrawSteps() # 更新步数
pygame.display.update()
if self.GameOver(): # 如果游戏结束
time.sleep(3) # 等待 3 秒
os._exit(0) # 退出游戏
self.Draw_background() # 更新游戏界面
self.DrawSteps() # 更新步数
pygame.display.flip() # 更新屏幕
```
def GameOver(self): if self.GrideOf(self.whiteSteps[0][0]) == [1, 1, 1, 1, 1]: win = pygame.image.load("image/victory.jpg").convert() win = pygame.transform.scale(win, (self.width, self.height)) self.screen.blit(win, (0, 0)) pygame.display.flip() print("黑子胜利") return True elif self.GrideOf(self.blackSteps[0][0]) == [2, 2, 2, 2, 2]: print("白子胜利") over = pygame.image.load("image/gameover.jpg").convert() over = pygame.transform.scale(over, (self.width, self.height)) self.screen.blit(over, (0, 0)) time.sleep(2) pygame.display.flip() return True return False对这段代码写出详细注释
这段代码是一个名为 `GameOver` 的函数,它的作用是检查游戏是否结束并显示相应的胜利或失败图像。
具体注释如下:
```python
def GameOver(self): # 定义函数名和参数
if self.GrideOf(self.whiteSteps[0][0]) == [1, 1, 1, 1, 1]: # 判断白子是否胜利
win = pygame.image.load("image/victory.jpg").convert() # 载入胜利图像
win = pygame.transform.scale(win, (self.width, self.height)) # 缩放图像大小
self.screen.blit(win, (0, 0)) # 在屏幕上显示图像
pygame.display.flip() # 刷新屏幕
print("黑子胜利") # 输出胜利信息
return True # 返回游戏结束
elif self.GrideOf(self.blackSteps[0][0]) == [2, 2, 2, 2, 2]: # 判断黑子是否胜利
print("白子胜利") # 输出胜利信息
over = pygame.image.load("image/gameover.jpg").convert() # 载入失败图像
over = pygame.transform.scale(over, (self.width, self.height)) # 缩放图像大小
self.screen.blit(over, (0, 0)) # 在屏幕上显示图像
time.sleep(2) # 等待2秒
pygame.display.flip() # 刷新屏幕
return True # 返回游戏结束
return False # 如果游戏没有结束,返回False
```
注释中对代码进行了详细的解释,主要是判断游戏是否结束,显示胜利或失败图像,等待2秒后刷新屏幕并返回游戏结束。
阅读全文