Python中文
首页
教程
问答
标签
搜索
登录
注册
变量事件在赋值之前被引用,尽管我引用了它
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试着把我所有的游戏关卡都放在一个程序里。在此之前,所有代码都工作得很好。但是,当我将所有程序放入其函数中并尝试运行第一级时,我遇到了一个错误:</p> <pre><code> if event.type == pygame.KEYDOWN and event.key == pygame.K_UP and igralec.y > 10: UnboundLocalError: local variable 'event' referenced before assignment </code></pre> <p>我在网上搜索了这个错误并做了修复程序;我将这些代码放在for event循环下,但这使游戏无法运行;我只需按一下键就可以移动一步(按住键不动)。然后我试着把if改成while,但也没用。以下是代码:</p> <pre><code> while run: for event in pygame.event.get(): if event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: run = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE and igralec.ziv > 0: print(igralec.fire_rate) igralec.fire_rate += 1 if igralec.fire_rate == 4: igralec.fire_rate = 1 if igralec.fire_rate % 2 == 1 or igralec.fire_rate == 1: strel.play() if igralec.levo: smer = -1 else: smer = 1 if len(metki) < 5: metki.append(torpedo(igralec.x, igralec.y + 40, smer)) for metek in metki: if metek.x < 1024 and metek.x > 0: metek.x += metek.v if metek.x > podmornca.okvir[0] and metek.x < podmornca.okvir[0] + podmornca.okvir[2]: if metek.y > podmornca.okvir[1] and metek.y < podmornca.okvir[1] + podmornca.okvir[3]: zadetek.play() else: metki.pop(metki.index(metek)) if event.type == pygame.KEYDOWN and event.key == pygame.K_UP and igralec.y > 10: igralec.y -= 5 if event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN and igralec.y < 600: igralec.y += 5 if event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT: igralec.levo = True igralec.desno = False eksploziv.x += igralec.v kamenx += igralec.v podmornca.zac += igralec.v podmornca.konc += igralec.v podmornca.x += igralec.v if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT: igralec.levo = False igralec.desno = True eksploziv.x -= igralec.v kamenx -= igralec.v podmornca.zac -= igralec.v podmornca.konc -= igralec.v podmornca.x -= igralec.v if event.type == pygame.KEYDOWN and event.key == pygame.K_RSHIFT : if igralec.ziv < 0: restart = True </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p><code>event</code>是第一个for循环的本地。循环结束后<code>event</code>将超出范围。 <code> if event.type == pygame.KEYDOWN and event.key == pygame.K_UP and igralec.y > 10: igralec.y -= 5</code>在for循环之外,这是导致此错误的原因</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
文本导入时标题行中的特殊字符
7 回答
文本小部件:在没有输入时更新并在循环后保持空闲
8 回答
文本小部件tkin
4 回答
文本小部件tkinter中的标签更改或文本外观更改是否有撤消功能?
9 回答
文本小部件tkinter复制图像选项
8 回答
文本小部件上的Python Tkinter ttk滚动条未缩放
2 回答
文本小部件上的滚动条可能需要根据制表符ord显示前进行滚动
4 回答
文本小部件不显示lis中的内容
10 回答
文本小部件不显示Unicode字符
10 回答
文本小部件中写入的行间距
3 回答
文本小部件中的文本作为变量
6 回答
文本小部件中的滚动条仅显示在底部
3 回答
文本小部件中的选项卡键空间计数
7 回答
文本小部件作为Lis
3 回答
文本小部件在主框架中扩展列宽
4 回答
文本小部件未使用删除功能清除
10 回答
文本小部件滚动动画(Tkinter、Python)
9 回答
文本居中。格式正确吗?
5 回答
文本差分算法
2 回答
文本已知时音频文件中的单词索引
6 回答