计算机科学与技术实训报告(共11页).doc
《计算机科学与技术实训报告(共11页).doc》由会员分享,可在线阅读,更多相关《计算机科学与技术实训报告(共11页).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上郑州轻工业学院实 训 报 告实训名称: 计算机科学与技术专业暑假项目实训 姓 名: 秦振华 院 (系): 计算机与通信工程学院 专业班级: 计算机科学与技术专业 12-01班 学 号: 2 指导教师: 李晔 成 绩: 时间: 2013年 6月30日至2013 年7 月12日实训报告一项目:五子棋1.需求分析 1.1要有比较友好的界面,界面应显示那方落子,游戏提示,以及显示那方获胜。 1.2当游戏开始的时候,黑方先落子,随后白方落子,当鼠标点向某个点时,产生相应的棋子。 1.3当某一方在任意一条线上产生五个相同的棋子时,获胜,游戏提示,那方获胜,左键继续,右键退出。2.
2、关键的技术 2.1棋盘的形成,背影颜色,棋子颜色形状的实现。 2.2棋子位置的确定 2.3某一方是否获胜的判断 2.4游戏结束界面和文字的实现 2.5 图形库的合理应用3.系统实现#include #include #include #include #include int xx=30,yy=50,t1x=30,t1y=20,t2x=557,t2y=20,kuan=50,banjing=10;char t130,*t2;int qi1515;int luo;void huaqipan()setbkcolor(RGB(0xEE,0xE6,0x85);cleardevice();setcolor
3、(BLACK);outtextxy(t1x, t1y, 黑方落子);outtextxy(t2x, t2y, 鼠标左键落子,右键退出);setlinestyle(PS_SOLID,1);int i;for(i=0;i=14;+i)line(xx,yy+i*kuan,kuan*14+xx,yy+i*kuan);for(i=0;i=14;+i)line(xx+i*kuan,yy,xx+i*kuan,14*kuan+yy);int nagedian(int &x,int &y)int mx,my,i;int dist=,dist2;int z42;z00=(x-xx)/kuan,z01=(y-yy)/
4、kuan;z10=z00;z11=z01+1;z20=z00+1;z21=z01;z30=z00+1;z30=z01+1;int dx=-1,dy;for(i=0;i=0&zi0=0&zi1=14)mx=zi0*kuan+xx;my=zi1*kuan+yy;dist2=(mx-x)*(mx-x)+(my-y)*(my-y);if(dist2(kuan/3)*(kuan/3) return 0;x=dx;y=dy;return 1;int win(int x,int y)int xx,yy,count;xx=x;yy=y;count=1;while(yy-1)=0&(xx-1)=0&qiyy-1
5、xx-1=qiyyxx)/左上到右下yy=yy-1;xx=xx-1;while(yy+1)=14&(xx+1)=5) return 1;xx=x;yy=y;count=1;while(yy-1)=0&(xx+1)=14&qiyy-1xx+1=qiyyxx)/右上到左下yy=yy-1;xx=xx+1;while(yy+1)=0&qiyy+1xx-1=qiyyxx)yy=yy+1;xx=xx-1;count+;if(count=5) return 1;xx=x;yy=y;count=1;while(yy-1)=0&qiyy-1xx=qiyyxx)/上到下yy=yy-1;while(yy+1)=5)
6、 return 1;xx=x;yy=y;count=1;while(xx-1)=0&qiyyxx-1=qiyyxx)/左到右xx=xx-1;while(xx+1)=5) return 1;return 0;int play()MOUSEMSG m;while(1)m = GetMouseMsg();switch(m.uMsg)case WM_LBUTTONDOWN:int x=m.x,y=m.y,jx,jy;int ret=nagedian(x,y);jx=x,jy=y;if(ret=0)break;else if(qiyx!=-1)break;elseif(luo=1)qiyx=1;x=x*
7、kuan+xx;y=y*kuan+yy;setfillcolor(BLACK);solidcircle(x,y,kuan/3);if(win(jx,jy) return luo;setcolor(BLACK);outtextxy(t1x, t1y, 白方落子);luo=0;else if(luo=0)qiyx=0;x=x*kuan+xx;y=y*kuan+yy;setfillcolor(WHITE);solidcircle(x,y,kuan/3);if(win(jx,jy) return luo;setcolor(BLACK);outtextxy(t1x, t1y, 黑方落子);luo=1;b
8、reak;case WM_RBUTTONUP:return 2;/ 按鼠标右键退出程序int main()int winner;MOUSEMSG m;initgraph(759, 770);doFlushMouseMsgBuffer();luo=1;memset(qi,-1,sizeof(qi);huaqipan();winner=play();if(winner=2)return 0;setfillcolor(WHITE);solidrectangle(0,350,770,420);setbkcolor(WHITE);if(winner=0)outtextxy(280, 377, 白方胜(左
9、键继续,右键退出); elseouttextxy(280, 377, 黑方胜(左键继续,右键退出);while(1)m = GetMouseMsg();if(m.uMsg=WM_LBUTTONDOWN)break;else if(m.uMsg=WM_RBUTTONUP)return 0;while(1);closegraph();二项目:小熊时针1.需求分析 1.1要有比较好的界面,界面应显示一个钟表的图形,钟表上标有1到12的数字,有用直线描绘的长度,颜色不同的时针,分针,秒针,钟表还有两个耳朵,类似小熊的形状。 1.2当钟表运行起来的时候,显示的是当前的系统时间,随后秒针开始走动,更现实中
10、的钟表一样走动。 1.3用鼠标点图形界面的时候,钟表不产生反应,继续走动,当按下键盘任意键时,钟表停止走动,退出当前界面,运行结束。2.关键技术 2.1图形库的合理应用2.2画小熊始终的轮廓,实时显示时针,分针,秒针。2.3按键盘任意键结束,关闭图形界面2.4根据当前时间计算时针、分针和秒针的角度,并绘制2.5 画时间间隔点,并标明数字1-123.系统实现#include / 就是需要引用这个图形库#include #include#include void drawForm();void drawTime();int main()initgraph(640, 480);drawForm();
11、 /画小熊时钟的轮廓while(!kbhit() /实时显示时针、分针和秒针,按任意键结束drawTime(); /显示时针、分针和秒针Sleep(500); /延时0.5秒 closegraph(); / 关闭图形界面return 0;void drawTime()struct tm *when; /定义tm类型的分解指针,该结构类型有成员项tm_year,tm_mon,tm_day,tm_hour,tm_min,tm_secdouble h,m,s; /h,m,s记录当前时间的时、分、秒static double hr,mr,sr; / hr,mr,sr记录时针分针和秒针对应的角度,为方便
12、擦出痕迹,用静态存储static int flag=0; /第一次调用标记,需静态存储time_t now;/定义ttime(&now); /time()函数用于取1970年1月1日到现在经过的秒数,存入nowwhen=localtime(&now); /将now中用秒表示的时间转换为当地时间存入when.h=when-tm_hour;m=when-tm_min;s=when-tm_sec;if(flag!=0) /若不是第一次调用时间显示,需擦除上一次显示的指针痕迹setcolor(YELLOW);line(200,200,200+50*cos(hr),200+50*sin(hr);line
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机科学 技术 报告 11
限制150内