STC大作业创新设计-乒乓游戏改进

一、设计概述
1.设计目的
下载测试乒乓游戏的时候觉得很有意思,但玩法还是比较单一,可以添加一些功能和提升难度来增强游戏的趣味性。
2.设计任务
9.9-9.10实现第一个功能。9.11-9.12实现第二个功能。9.13-9.14实现第三第四个功能。9.15整合并测试。
3.设计要求
功能1:随机生成数字n并在数码管上显示,n即是一次乒乓游戏中需要正确按下的位置(或对称的数字),而不再是样例中的最左边或最右边。
功能2:按键KEY3用于选手1开球(即左边开球)或回击球,按键KEY2用于选手2开球(即右边开球)或回击球。刚开始的时候数码管上显示“n 00 VS 00”。LED灯中间有两个亮灯,是初始状态。如果按下KEY3或KEY2键,会有一亮灯从最左边(最右边)出现,并一位位地向右移(左移),当亮灯移至正确位置时,按下KEY3(KEY2)键则表示回击球成功,亮灯会逆向开始移动,否则开球方得分加一。一局的胜负是某一方取得11分且比对方分数大2为止,数码管中间显示局数比分,如果一方局数得分为2,则表示其比赛取胜,相应数码管会有闪烁图案表示。
功能3:每次失误时蜂鸣器响一声。
功能4:有一方获胜时蜂鸣器长响。
二、总体方案设计
Pingpang_Init()给用到的各类参数赋初值。
my100mS_callback()集合了四个功能,显示了四种状态下需要进行的操作。等待开球状态下可以按key2/key3开球,led灯从最左边/最右边开始亮起。从左往右/从右往左状态下,led灯逐个亮起,按下key2/key3击球,如果过了正确位置还没被击打则相应选手加分,蜂鸣器响,同时数码管显示得分。数码管显示局比分,某一方取得11分且比对方分数大2则记1分,如果一方局数得分为2,则表示其比赛取胜。比赛结束状态下,相应数码管会有闪烁图案表示,蜂鸣器长响。
三、硬件原理
STC大作业创新设计-乒乓游戏改进_第1张图片
STC大作业创新设计-乒乓游戏改进_第2张图片
四、软件设计与实现
Pingpang_Init()
1.使用随机数生成函数产生随机数n,其中0<=n<=7
在这里插入图片描述
2. 考虑到有左边开球、右边开球、等待开球、比赛结束4种情况,可以用状态参数i的4种取值区分。
3.用v,s表示局比分。
4.用P1score,P2score表示左右两边的分数。
5.用show_w1,show_w2,show_w3,show_w4,show_w5,show_w6,show_w7,show_w8表示数码管显示位。
6. 刚开始的时候数码管上显示“n 00 VS 00”。
在这里插入图片描述
STC大作业创新设计-乒乓游戏改进_第3张图片
my100mS_callback()

  1. 用G_value表示led显示,也即球的位置。
    2.在等待开球的状态下,按KEY3左边开球或回击球,按KEY2右边开球或回击球。
    STC大作业创新设计-乒乓游戏改进_第4张图片
    3.如果按下KEY3或KEY2键,会有一亮灯从最左边(最右边)出现,并一位位地向右移(左移),当亮灯移至正确位置时,按下KEY3(KEY2)键则表示回击球成功,亮灯会逆向开始移动,否则开球方得分加一,数码管显示得分。
    STC大作业创新设计-乒乓游戏改进_第5张图片
    STC大作业创新设计-乒乓游戏改进_第6张图片
    4.数码管显示局比分,一局的胜负是某一方取得11分且比对方分数大2为止,如果一方局数得分为2,则表示其比赛取胜,相应数码管会有闪烁图案表示。调用SetBeep(),每次失误时蜂鸣器响一声,有一方获胜时蜂鸣器长响。
    在这里插入图片描述
    STC大作业创新设计-乒乓游戏改进_第7张图片
    主函数
    STC大作业创新设计-乒乓游戏改进_第8张图片
    五、实验过程与测试
    初始时,数码管和led灯显示正常
    左边获胜时,数码管和led灯显示正常,蜂鸣器正常
    右边获胜时,数码管和led灯显示正常,蜂鸣器正常
    六、设计总结与心得
    1.设计总结
    本次实验软件和硬件相结合,运用keil和STC-ISP进行编程和仿真,利用数码管、发光二极管、蜂鸣器等模块最终实现了乒乓游戏的改进。
    2.设计心得
    本次实验中,我先是依次查看网站上提供的参考代码,研究代码中的函数,了解了各种功能需要如何实现,然后确定选题,一步一步实现自己需要的功能,完成了自己的创新的项目,得到了自己的仿真结果。
    通过这段的学习,我学会了如何使用仿真软件,了解了仿真的作用和效果,并最终通过编码来解决问题。明确自己的实验项目之后,应该把大的目标分隔成小的任务,静下心来分模块逐个击破,然后再整合起来。遇到问题时要戒骄戒躁,不能轻易放弃,一定要敢于尝试,也要学会与同学交流讨论,或是在网络上寻找答案。实现更加复杂的功能在目前看来还存在一定的难度,但随着学习的进一步深入,相信这一切不会是不可能的。

完整代码

你可能感兴趣的:(小学期,c++)