【笔记】python外星人入侵项目中找了好久的一个bug

        在第14章记分功能实现时,计分板上的得分始终不更新,alien_invasion文件_check_bullet_alien_collision()函数中self.stats.score值随着飞机爆炸增加,但是在绘制到屏幕上时,scoreboard文件中的self.stats.score值一直为0。

        寻找了好久的bug,发现当在scoreboard文件中的self.stats.score变量位置上放上settings中的变量时,更新没有问题,但是当放入Game_stats中的变量时就不能更新,于是考虑是stats实例的问题。

最终发现在alien_invasion文件中创建实例时写成了这样:

#创建存储游戏统计信息的实例
#并创建记分牌
self.stats = GameStats(self)
self.sb = Scoreboard(self)

self.stats = GameStats(self)

        创建了两次gamestats实例

        如果代码写成如下载这样:

 #self.stats = GameStats(self)
 self.sb = Scoreboard(self)
 self.stats = GameStats(self)
则会报错,原因是在创建Scoreboard实例时,在构造函数中需要初始化其中用到的各种属性,其中包含:
 self.stats = ai_game.stats
若是写成这样:

self.stats = GameStats(self)
self.sb = Scoreboard(self)
self.stats1 = GameStats(self)

也可以正常运行,所以这里是因为将创建的GameStats实例self.stats给覆盖(刷新)了,

debug:断点设置在 self.sb = Scoreboard(self)这一句

self.stats = GameStats(self)
self.sb = Scoreboard(self)
self.stats1 = GameStats(self)

可以看到在Scoreboard中:

<game_stats.GameStats object at 0x0000024F87DCA548>

继续向下运行,当创建下一个GameStats实例时:

 可以看到在Scoreboard中:

<game_stats.GameStats object at 0x0000024F8A14DE48>

第二次创建的实例并没有指向第一次,实例的存储位置不同。

又一次dubug:

显然两个实例位置不同

在创建后续的实例时,使用的是后一个GameStats实例

总之就是使用了两个GameStats实例,两个实例名字一样时,self的指向,参数如何传递有待后面的学习。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 Python 来创建一个阅读笔记程序。你可以使用 Python 的 GUI 库如 Tkinter 或 PyQt 来创建程序的图形界面,使用文件读写模块来保存和读取笔记。 如果你需要将这个程序打包成 exe,可以使用 pyinstaller 或 cx_Freeze 等工具来进行打包。 以下是一个简单的示例代码,使用 Tkinter 创建阅读笔记程序的界面。 ```python import tkinter as tk root = tk.Tk() root.title("阅读笔记") # 创建文本框 text = tk.Text(root) text.pack() # 创建保存按钮 save_button = tk.Button(root, text="保存", command=save_note) save_button.pack() root.mainloop() ``` 其 save_note 函数可以负责将笔记保存到文件。 以上代码只是个简单的示例,你可能需要根据你的需求来进行修改和扩展。 ### 回答2: Python可以用来开发一个阅读笔记的exe应用程序。该应用程序可以帮助用户记录读书笔记、整理阅读材料,并提供一些便捷的功能。 首先,该应用程序应该具备一个简单的用户界面,可以让用户添加阅读材料的信息。用户可以输入书名、作者、出版日期等基本信息,并可以添加自己的笔记内容。这些信息可以保存到本地数据库或者文本文件,方便用户随时查看和编辑。 其次,该应用程序可以提供一些搜索和分类的功能,帮助用户快速到自己感兴趣的材料。用户可以根据书名、作者或者出版日期等信息进行搜索,也可以将材料分为不同的分类,比如小说、科技、历史等,方便用户进行整理和管理。 此外,该应用程序还可以提供一些额外的功能来增强用户的阅读体验。比如,用户可以设置阅读进度,记录自己已经读到哪一页;可以设置阅读目标,帮助自己合理安排阅读时间;还可以添加标签和评论,方便用户做更详细的整理和回顾。 最后,该应用程序还应该具备数据备份和恢复的功能,以防止用户的阅读笔记丢失。可以定期自动备份用户的阅读笔记数据,并提供恢复功能,保证用户的阅读数据安全可靠。 总之,通过利用Python开发一个阅读笔记的exe应用程序,可以帮助用户更好地整理和管理阅读材料,提高阅读效率和体验。 ### 回答3: Python可以编写一个阅读笔记的exe应用程序。为了实现这个功能,可以使用Python的GUI库,如Tkinter或PyQt来创建用户界面,并使用文件处理模块来读取和写入笔记。 首先,可以使用Tkinter或PyQt创建一个简单的界面,包括一个文本框用于显示笔记和一个保存按钮。用户可以在文本框输入和编辑笔记内容,并通过保存按钮将笔记保存到文件。 要将笔记保存到文件,可以使用Python的文件处理模块来实现。可以使用open()函数打开一个文件,指定文件名和打开模式(如写入模式),然后使用write()函数将文本框的内容写入文件。最后,使用close()函数关闭文件。 为了读取笔记,可以在程序启动时检查是否存在之前保存的笔记文件。可以使用open()函数以读取模式打开文件,使用read()函数读取文件内容,并在文本框显示。 除了基本功能外,你还可以添加其他功能,例如支持创建新的笔记文件、添加时间戳、对笔记进行搜索等。 总之,通过使用Python的GUI库和文件处理模块,你可以编写一个简单的阅读笔记exe应用程序,让用户可以方便地创建、编辑和保存笔记。该程序可以在Windows操作系统上作为exe文件运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值