我在用python中的pygame里在做游戏,结果有个问题让我百思不得其解,希望有大神能帮助我,废话不多说,上代码:
# -*- coding: utf-8 -*- import pygame # 初始化pygame pygame.init() pygame.mouse.set_cursor() #设置鼠标光标在程序内的显示图像(没有设置) # 设置窗口标题和大小 界面_标题 = "射击与闪躲" 界面_大小 = (1320, 680) 界面 = pygame.display.set_mode(界面_大小) pygame.display.set_caption(界面_标题) # 设置颜色 颜色 = (255, 255, 255) # 加载图像 游戏主界面 = pygame.image.load("游戏主界面.jpg") # 填充背景色 界面.fill(颜色) # 在屏幕上绘制图像 界面.blit(游戏主界面, (30, 30)) # 绘制文本 字体1 = pygame.font.Font('游戏字体.ttf', 100) 文字1的内容 = [字体1.render("欢迎", True, (0, 0, 0)), 字体1.render("回来", True, (0, 0, 0)), 字体1.render("! ! !", True, (0, 0, 0))] 文字1的位置 = [(1100, 100), (1100, 200), (1100, 300)] for i in range(len(文字1的内容)): 界面.blit(文字1的内容[i], 文字1的位置[i]) # 绘制文本 字体2 = pygame.font.Font('游戏字体.ttf', 80) 字体3 = pygame.font.Font('游戏字体.ttf', 60) 文字2的内容 = [字体2.render("关闭", True, (0, 0, 0)), 字体3.render("启动!!!", True, (250, 0, 0)), 字体2.render("设置", True, (0, 0, 0))] 文字2的位置 = [(220, 475), (475, 390), (750, 475)] for i in range(len(文字2的内容)): 界面.blit(文字2的内容[i], 文字2的位置[i]) # 更新显示 pygame.display.flip() abc = True # 游戏循环 while abc: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: # 退出游戏循环 pygame.quit() exit() elif event.type == pygame.MOUSEBUTTONDOWN: x, y = pygame.mouse.get_pos() “ if x >= 207 and x <= 413: if y >= 462 and y <= 558 : if event.button == 1: abc = False ” “ elif x >= 460 and x <= 670: if y >= 370 and x <= 465: if event.button == 1: abc = False ” elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: abc = False pygame.quit() exit()
其中游戏循环里我将其它部分和它分开的那一部分中,我就不理解了,为什么第一个引号里的代码在条件成立的时候,能够执行,第二个引号里的代码在条件成立的时候,又不能执行了,除了条件不一样以外,代码全都一样,这咋回事啊?
我也是真服了,第二个引号里的代码除了条件以外,我都换成了其它代码又试了一下,都不行,改成啥都没法执行
然后我又对代码结构上进行了改变,游戏循环改成了这样:
# 游戏循环 while abc: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: # 退出游戏循环 pygame.quit() exit() elif event.type == pygame.MOUSEBUTTONDOWN: x, y = pygame.mouse.get_pos() if x >= 207 and x <= 413: if y >= 462 and y <= 558 : if event.button == 1: abc = False elif event.type == pygame.MOUSEBUTTONDOWN: x, y = pygame.mouse.get_pos() if x >= 460 and x <= 670: if y >= 370 and x <= 465: if event.button == 1: abc = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: abc = False
当我以为这样就行时,我错了,还是没法执行,于是我又改成了这样:
# 游戏循环 while abc: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: # 退出游戏循环 pygame.quit() exit() elif event.type == pygame.MOUSEBUTTONDOWN: x, y = pygame.mouse.get_pos() if x >= 207 and x <= 413: if y >= 462 and y <= 558 : if event.button == 1: abc = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: abc = False for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONDOWN: x, y = pygame.mouse.get_pos() if x >= 460 and x <= 670: if y >= 370 and x <= 465: if event.button == 1: abc = False
将它直接提出来了,可是这样还是不能执行
我又在网上查阅,又问AI,可根据这些,我的代码应该没有错才对,可就是执行不了,python也不报错,pycharm也没有警告此代码无法运行,可就是执行不了......( * - * )
最终我仍然没有解决问题,我内心崩溃了,我是真的百思不得其解了(@.@)
希望有大神看见后能够帮助我,万分感谢!!!