20244121 2024-2025-2 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 2441
姓名: 潘牧子
学号:20243401
实验教师:王志强
实验日期:2025年5月14日
必修/选修: 公选课
1.实验内容
利用python编写并运行一个飞行棋小游戏
2. 实验过程及结果
2.1玩家类编写

通过玩家类飞行棋面板的相关编写来定义玩家(player)的相关属性(姓名,位置,飞行状态)
同时position用0-99索引表示棋盘格,显示时+1转换为1-100格。is flying和fly-remaining用于处理飞行中的特殊状态,比如连续掷骰子掷到6点的状态
2.2棋盘类编写(由于部分逻辑未学会这里使用了大模型进行了优化)

通过棋盘的编写来定义棋盘的规则(普通格,飞行格相关的运行逻辑)
其中的get_next_position 方法负责计算移动后的位置,优先处理飞行跳跃格,再限制不超过终点
2.3游戏主逻辑编写(用来管理玩家回合,骰子逻辑,胜利判定)



2.3.1. 回合逻辑:
current_player 记录当前玩家索引,通过 switch_player 切换。
掷出6点时,用 continue 跳过回合切换,实现连续掷骰子。
2.3.2. 飞行状态:
代码中预留了 is_flying 和 fly_remaining 字段,可扩展为“飞行N步”的规则(如踩到特定格后强制飞行若干步),当前版本简化为连续掷6点的逻辑。
2.3.3. 胜利判定:
当 position 等于99(第100格)时,打印胜利信息并结束游戏。
2.4程序初始化与运行

可通过 input() 函数让玩家输入姓名,或增加 player_num 参数支持更多玩家(修改 Game 类的初始化逻辑)。
2.5程序试运行
aaef0f117dd5dab6b605a75b02b5b838.mp4
2.6程序编写中的关键逻辑
掷6点逻辑:连续掷6点时不切换玩家,直到掷出非6点或到达终点。
飞行格跳跃:踩到 fly_positions 中的格子(如索引5,即第6格)时,直接跳跃到对应格子(如索引20,即第21格)。
终点限制:超过终点时固定在第100格(索引99)。
3. 实验过程中遇到的问题和解决过程
问题一:对飞行棋程序中部分程序编写的过程并不熟悉
解决方案:通过查阅B站以及相关大模型优化来解决问题
问题二:编写逻辑运行错误
解决方案:仔细检查,反复尝试
4.实验感悟思考
我想做一个飞行棋程序的原因是最近几天新接触了飞行棋游戏对它产生了一定兴趣,在完成飞行棋程序的编写与调试过程中,我对编程逻辑与模块化设计有了更为深刻的理解,也在实践中体会到理论与实际结合的重要性。总的来说,这次飞行棋程序实验不仅巩固了我的编程知识,还培养了我的问题解决能力和工程思维。在未来的学习和实践中,我将继续保持这种探索精神,不断挑战自我,提高编程水平。
5.课程总结(感想体会、意见、建议等)
回顾这一个学期python课的历程,我一开始选python课是在学长的“早学晚学都得学,不如现在学”建议下选了这门课,由于在选课期间换了一个网速特别快的电脑我也是成功抢上了python课,随着课程的开展我也逐步认识到了python是一个强大的编程武器(在爬虫那节课检验爬虫效果的过程中就可以见识到)合理利用python可以提高我们的信息素养,同时在实验课的过程中老师“手把手式”教学也给我留下了深刻印象,跟随老师学习的这段时间里我从一个python小白成长为一个懂python,会用python的人,这和老师的教学方式是分不开的,老师在讲完后会预留时间给同学提问和完成作业这一点我感觉十分的好(尤其是我这样奉行ddl是最高生产力的厚脸皮的人来说)说实话,在Python课堂上志强老师帮了我不少的忙(我就是那个python运行环境总有问题的那个同学)我由衷的感谢老师
最后,对于讲完课的自习的那段时间有同学不能好好利用建议布置随堂作业,让同学们限时交(嘻嘻)
最后的最后,当学弟学妹们问我下学期应该选什么课时我会和他们说:“选python,别犹豫!”感谢志强老师这一个学期在python课上的陪伴!

posted @ 2025-06-02 15:37  潘牧子  阅读(39)  评论(0)    收藏  举报