C++高级编程课程设计
班 级: 学生姓名: 学 号: 日 期:
得
分:
评 语:
问题2:游动字符遇到边界反弹编程 目 录
一、程序分析与设计 ....................................................................................................................... 1 二、流程图 ....................................................................................................................................... 1 三、源程序清单 ............................................................................................................................... 1 四、调试过程 ................................................................................................................................... 3 五、程序有待改进的地方 ............................................................................................................... 3 六、本次编程的收获和建议 ........................................................................................................... 4 附录................................................................................................................................................... 4
C++高级编程课程设计
一、程序分析与设计
(标题四号宋体加黑,正文五号宋体,行间距-固定值18,首行缩进2字符)
随机游动的字符遇到边界反弹:
思路:要使字符任意游动,首先考虑到要有初始位置,然后还要控制字符运动的 方向,共有四个方向,想到利用生成随机数来控制方向;当字符遇到边界时,要反弹,此时要选择一个合适的方向使字符继续运动。
二、流程图
利用构造函数初始化初始坐标、游动字符以及边界? 调用void Move()函数改变坐标,遇到边界时反弹? 然后调用void Show()函数打印? 再调用void cachu()函数进行擦除?利用while循环,让字符始终游动。
三、源程序清单
(此部分采用小五号宋体,行间距-固定值14)
#include
char d; int x; //x 坐标 int y; //y 坐标 int a; int b;
int minX; //最小x坐标 int maxX; //最大x坐标 int maxy;
//构造函数 {
x=10;
1
int miny;
public:
zyy(char str)
C++高级编程课程设计
y=10;
a=1; b=1;
minX=0; //x的最小值 maxX=80; //x的最大值 miny=0; //y的最小值 maxy=25; //y的最大值 d=str;
}
//显示字符 void Show() { Print( d );
}
//擦除字符 void cachu() { system(\ }
void Move() { int s; x=x+a; y=y+b;
if(x<=minX||x>=maxX) s=0; if(y<=miny||y>=maxy) s=1; if(s==0) a=-a; if(s==1) b=-b;
}
void Print(char str) { COORD cord; cord.X=x;
cord.Y=y; //字符遇到x轴边界反弹//字符遇到y轴边界反弹 2
C++高级编程课程设计 };
char alph = 'D'; void main() { }
zyy my(alph ); while(1) { }
my.Show(); my.cachu(); }
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cord); cout< my.Move(); 四、调试过程 1. 在程序运行的过程中,出现了很多复杂的问题,也不乏许多低级的错误。例如不知道如何用while循环来控制坐标使其一直是变化的,并且写得程序很复杂,定义了很多没用的变量; 2. 字符不到边界就反弹回来,通过自己定义边界让其反弹; 3. 通过调整Sleep的时间,使得字符以合适的速度游动; 4. 低级错误如将字符与字符串弄混,导致很多地方不能正常运行。 通过一步一步地修改,终于做出了正确的程序。 五、程序有待改进的地方 1. 当方向确定后,字符游动方向确定,最好是让游动的过程也是随机的; 2. 让字符游动在满足某一条件时停止,而不是一直无休止地运行下去; 3. 画出边界,这样就不会出现不到边界就反弹或者是到了沿着边界运行的问题了。 3 C++高级编程课程设计 六、本次编程的收获和建议 收获:对于这次编程,遇到了不少的困难。开始以为是要字符在任何时候的运动都是随机的,可是在运行了很多遍之后才发现这样的程序很难完成,起码就自己目前的水平来看很难。后来经过简化,让字符只在初始时和遇到边界时,方向随机,然后做出程序。有时候别把程序想得太过复杂。 建议:建议老师把自己认为最标准,逻辑最好的程序展示给同学们,让我们认识到自己的不足,从而制作出更加完美的C++程序。 七、编程结果截屏 4 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数学建模作业之游动字符模板在线全文阅读。
相关推荐: