数学建模作业之游动字符模板

2019-02-21 01:40

C++高级编程课程设计

班 级: 学生姓名: 学 号: 日 期:

分:

评 语:

问题2:游动字符遇到边界反弹编程 目 录

一、程序分析与设计 ....................................................................................................................... 1 二、流程图 ....................................................................................................................................... 1 三、源程序清单 ............................................................................................................................... 1 四、调试过程 ................................................................................................................................... 3 五、程序有待改进的地方 ............................................................................................................... 3 六、本次编程的收获和建议 ........................................................................................................... 4 附录................................................................................................................................................... 4

C++高级编程课程设计

一、程序分析与设计

(标题四号宋体加黑,正文五号宋体,行间距-固定值18,首行缩进2字符)

随机游动的字符遇到边界反弹:

思路:要使字符任意游动,首先考虑到要有初始位置,然后还要控制字符运动的 方向,共有四个方向,想到利用生成随机数来控制方向;当字符遇到边界时,要反弹,此时要选择一个合适的方向使字符继续运动。

二、流程图

利用构造函数初始化初始坐标、游动字符以及边界? 调用void Move()函数改变坐标,遇到边界时反弹? 然后调用void Show()函数打印? 再调用void cachu()函数进行擦除?利用while循环,让字符始终游动。

三、源程序清单

(此部分采用小五号宋体,行间距-固定值14)

#include #include using namespace std; class zyy { private:

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


数学建模作业之游动字符模板.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高一地理自然界的水循环和水资源的合理利用单元测试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: