93
社区成员




课程:《Python程序设计》
班级:2341
姓名: 徐奕
学号:20234109
实验教师:王志强
实验日期:2024年5月25日
必修/选修: 公选课
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等
一、了解五子棋游戏规则,构思程序大致设计的逻辑框架
五子棋,又称为连珠棋或五目棋,是一种两人对弈的纯策略型棋类游戏。通常双方分别使用黑白两色的棋子,在棋盘横线和竖线的交叉点上,轮流进行落子。先形成五子连线(横、竖、斜均可)的一方为胜。
二、根据游戏规则和框架编写程序,不断改进优化
在实验正式开始前,先确保Pycharm和Pygame的开发环境均已配备完毕,做好充足准备工作。下图为安装Pygame的过程截图。
棋盘初始化:使用Pygame库初始化游戏窗口,设置窗口的大小,并定义棋盘尺寸、格子大小等参数。在pygame.init()之后,通过pygame.display.set_mode()函数设置窗口大小,并使用pygame.display.set_caption()设置窗口标题。
玩家初始化:设定两个玩家,分别用“黑”和“白”表示,并决定谁先下第一步。
五子棋的界面主要由棋盘和棋子组成。使用Pygame的绘图函数(如pygame.draw.rect())来绘制棋盘,每个格子的大小由cell_size变量控制。通过循环和条件判断可以绘制出整个棋盘。
当玩家点击鼠标时,通过pygame.mouse.get_pos()获取鼠标位置,并转换为棋盘上的格子坐标。然后将棋子(由矩形表示)绘制在对应的位置,并将棋子的位置信息(坐标和玩家标识)保存到chess_arr列表中。
编写一个名为check_win的函数来判断当前局面是否有人获胜。该函数首先根据棋子位置信息创建一个二维数组m,用于表示棋盘上每个格子的状态(有棋或无棋)。然后遍历最后落下的棋子的四个方向(横、竖、两个对角线),分别计算每个方向上连续棋子的数量。如果某个方向上连续棋子的数量达到5个,则返回True表示获胜。
在主循环中,使用pygame.event.get()获取事件队列中的事件,并逐一处理。对于QUIT事件(即窗口关闭事件),调用pygame.quit()和exit()来退出游戏。对于MOUSEBUTTONUP事件(即鼠标弹起事件)执行棋子下落和胜负判断的操作。
三、得出实验结果,运行程序,测试游戏是否能成功进行
经过上述步骤的编写和实现,成功创建了一个简单的五子棋小游戏。游戏界面简洁明了,玩家可以通过鼠标点击进行下棋操作,并实时更新棋盘状态。当某一方向上连续棋子数量达到5个时,游戏会判断为获胜并结束当前局面。
若黑棋胜
若白棋胜
无论黑棋还是白棋胜利,游戏均无明显bug,均成功运行,实验成功。
本次实验的主要目的是通过Python编程语言及Pygame库,设计和实现一个简单的五子棋小游戏。实验旨在加深对Python编程语言的理解,特别是图形用户界面的编程以及游戏逻辑的设计和实现。
通过本次实验,我们深入了解了Python编程语言及Pygame库在游戏开发中的应用。通过实践编写五子棋小游戏,掌握了如何使用Pygame库绘制图形界面、处理用户输入以及实现游戏逻辑,也锻炼了问题分析和解决能力。
作为一个文科生,先前只是些许接触过python相关知识,在这学期的课程中收获满满。从python的安装到pycharm的应用,再从gitee的注册到git的安装与应用,都离不开老师的细心指导和同学们的热情帮助,同时,自己的努力探求答案、认真查阅资料也是完成实验的必不可少的一部分。每一次实验报告的完成都伴随着一些拦路虎,但我通过大量查找资料、观看教学视频、研究博主的代码等努力,拓展了相关方面的知识。同时,在设计过程中,我也不断尝试并调整,以实现代码的正确运行。不仅仅是这门课的实验,生活中难免遇到一些挫折和错误,但正是不断的尝试和调试,让我在明白编程的复杂性和挑战性的基础上锻炼了解决问题、面对困难的能力,也让我更珍惜每一次成功的喜悦,学会在反思中不断进步。
通过这学期的课程和实验,我深刻感受到了理论与实践相结合的重要性。只有将理论知识应用到实际中,才能真正理解和掌握它。同时,我也认识到了自己在编程方面还有很多需要提升的地方,比如知识点的强化、代码的优化、错误处理的完善等。
印象比较深刻的是在第一次实验中,我加深了对git的认识,一开始对git应用的不理解在随着git技能的掌握逐渐明白其作为辅助工具的重要性,git保障数据安全,防止因电脑更换的代码丢失。还有便是在学习过程中时而因为大量的英文字符崩溃,最后跟随老师视频指导一步步静下心来完成,更是说明老师的百日英语打卡任务的必要性,也在一定程度上督促了该项任务每日的坚持完成。当然,老师风趣幽默的课堂氛围,也在一定程度上激发了我对python学习的热情。
回顾这学期的学习,我也在不断学习相关知识,认真完成每项任务,努力提升个人能力素质,但是有些方面仍不了解,学的仍不透彻,也留下了遗憾。如果未来有机会,希望能弥补这个遗憾,毕竟在最后一个综合实验中,看到游戏界面跳出并正确运行,实在是惊喜,成就感满满。希望以后能有这样一个动力与契机吧。
最后很感谢老师一学期的辛勤付出。当看到老师在课程的末尾祝愿所有同学“未来的人生,一路繁华似锦”,内心十分感动,感谢老师在这学期的耐心指导分析、感谢老师的答疑解惑、感谢老师对我们的理解与包容。一朝沐杏雨,一生念师恩。我们也衷心祝愿老师春晖四方、桃李天下、康健长乐!
(1)希望能适当增加课后练习,Python知识点多且细,极需要复习,课后练习可以增加学习动力,督促同学更好掌握知识点。
(2)希望能在课后将上课的资料分享给同学,上课有不明白的地方可以利用资料及时补习。
[《零基础学Python》]
博主发帖