C语言五子棋源代码-设计报告.docx





《C语言五子棋源代码-设计报告.docx》由会员分享,可在线阅读,更多相关《C语言五子棋源代码-设计报告.docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、语言福星世耕嫁合淡珍微料想告07电气班人册4人小俎戚员;时间;settextstyle(0,0,2);outtextxy(280,440/*press any key to begin);while(bioskey(0)! =0) main();csz()/*将所在位置的AXY赋初值6*/( for(i=0;i19;i+)for(j=0;j19;j+) aiU=6; )void win() /*推断输赢*/ int sum 1 ,sum2,sum3,sum4,sum=0,n,ij; for(i=X-4,j=Y-4,n=0;i=X,j=Y;i+,j+,n-=2)suml =ai Y+ai+1 Y
2、+ai+2 Y+ai+3 Y+ai+4 Y;sum2=ai0+ai+lU+l+ai+2U+2+ai+3j+3+ai+4j+4;sum3=aXj+aXj+l+aXj+2+aXU+3+aXU+4;sum4=aij+8+nj4-ai+1 j+7+n+ai+2J j+6+n +ai+3 j+5+n +ai+4 j+4+n; if(suml=5|sum2=5|sum3=5|sum4=5)p2win();if (suml=0|sum2=0|sum3=0|sum4=0) plwin(); for(i=0;i18;i+)for(j=0;j18;j+) sum二sum+aij; if(sum181) heqi(
3、);) void plmove() /* 玩家 1 的移动*/(switch(bioskey(0)(case ESC: closegraph(); exit(O);/*假如按键为 ESC 就退出嬉戏*/case SP:/*落子*/if(aXY=6) p 1 del();p2tum();aXY=0;white();win(); p2move(); else plmove();case A: /* 向左移*/ if(aXY=0)if(getx()= 140) moveto(520,gety() ;moverel(-20,0);white();else if(aXY=l)if(getx()= 140
4、) moveto(520,gety();black();moverel(-20,0);white();else yellow();if(getx()=140) moveto(520,gety();moverel(-20,0);white(); plmove();case D: /* 向右移*/if(aXY=O) if(getx()=500) moveto(l 20,gety();moverel(20,0);white();else if(aXY=l) if(getx()=500) moveto( 120,gety();black();moverel(20,0);white();else yel
5、low();if(getx()=500) moveto(120,gety();moverel(20,0);white();plmove();case W: /* 向上移*/if(aXY=O) if(gety()=70) moveto(getx(),450);moverel(0,-20);white();else if(aXY=l) if(gety()=70) moveto(getx(),450);black();moverel(0,-20);white();else yellow();if(gety()=70) moveto(getx(),450);moverel(0,-20);white()
6、;plmove();case S: /* 向下移*/if(aXY=O) if(gety()=430) moveto(getx(),50);moverel(0,20);white();else if(aXY=l) if(gety()=430) moveto(getx(),50);black();moverel(0,20);white();else yellow();if(gety()=430) moveto(getx(),50);moverel(0,20);white(); plmove();default: plmove();)void p2move() /*玩家 2 的移动*/(switch
7、(bioskey(0) /*假如按键为ESC就退出嬉戏*/(case ESC: closegr叩h(); exit(O);case ENTER: /*落子*/if(aXY=6) p2del();plturn();aXY=l;black();win();plmove(); else p2move();case LEFT: /* 向左移*/if(aXY=1) if(getx()= 140) moveto(520,gety();moverel(-20,0);black();else if(aXY=0)if(getx()= 140)moveto(520,gety();if(getx()= 140)mo
8、 vcto(500,gcty (); whitc() ;movcrcl(-20,0) ;black();else yellow();if(getx()= 140) moveto(520,gety();moverel(-20,0);black(); p2move();case RIGHT:/* 向右移*/if(aXY=l) if(getx()=500) moveto(l 20,gety();moverel(20,0);black();)else if(aXY=0) if(getx()=500) moveto(120,gety();white();moverel(20,0);black();els
9、e yellow();if(getx()=500) moveto( 120,gety();moverel(20,0);black();p2move();case UP: /* 向上移*/if(aXY= 1) if(gety()=70) moveto(getx(),450);moverel(0,-20);black();else if(aXY=O) if(gety()=70) moveto(getx(),450);white();moverel(0,-20);black(); else yellow();if(gety()=70) moveto(getx(),450);moverel(0,-20
10、);black();p2move();case DOWN: /* 向下移*/if(aXY= 1) if(gety()=430) moveto(getx(),50);moverel(0,20);black();else if(aXY=O) if(gety()=430) moveto(getx(),50);white();moverel(0,20);black();else if(gety()=430) moveto(getx(),50); yellow();moverel(0,20);black();p2move();default: p2move();)main()/*主函数*/ welcom
11、e();/*调用欢迎界面*/help();/*调用帮助界面*/initgraph(&w ,&gmode/c:Win-TCprojectsn); /*清屏*/ clearviewport();csz();qipangO; /*调用棋盘*/plmove();/*调用玩家1的移动*/p2move();getch();)3具体设计1部分:以下是我负责的模块的函数,由于个人水平问题,我只负责画图部分。(1)画白棋棋子(white() setcolor(7);setfillstyle(l,7);circle(getx(),gety(),9);floodfill(getx(),gety(),7);(2)画黑
12、棋棋子black()setcolor(O);setfillstyle(l,O);circle(getx(),gety(),9);floodfill(getx(),gety(),0);(3)补棋盘颜色由于我们实现棋子在棋盘上移动的功能是用:某一色棋子覆盖棋盘上的点,当光标移动后, 用白色圆圈将原本的棋子覆盖,再填上与棋盘相同的颜色,最终用十字线条覆盖原本棋子所 在的位置,然后再用棋子覆盖棋盘上新的点实现移动棋子和下棋的功能的,所以须要我编此 函数。yellow()setcolor(6);setfillstyle(l,6);circle(getx(),gety(),9);floodfill(get
13、x(),gety(),6);setcolor(15);line(getx()-9,gety(),getx()+9,gety();line(getx(),gety()+9,getx(),gety()-9);(4)画棋盘这段函数的功能是画出棋盘及棋盘边左右上方的pl,p2字样。首先先画一块18*18的有 色方块,然后利用循环及相对坐标在方块上画出棋盘的竖线和横线,接着移出棋盘设置背景 色,再设置字体颜色,最终再在棋盘的左右上方写上pl、ploqipang() setfillstyle(l,6);bar(120,50,520,450);for(k=0;k19;k+ + )moveto(140+20*
14、kz70);linerel(0,360);moveto(140,70+20*k);linerel(360,0);)moveto(240,170);setbkcolor(14);setcolor(5);s ette xtsty I e (3,0,4);outtextxy(50,60,”Pl“);outtextxy(560,60,P2n);课设总结经过这次的选课,我最大的感觉就是缺憾,验证了一句话:书到用时方恨少啊! ! ! ! ! ! 由于水平问题,我在这次的程序设计中担当的任务是画图。令人郁闷的任务。让 我很懊悔上学期没有把C学透,学好。虽然我考了 99,但我自己知道,那是突击出来的结 果,事
15、实上我肚子里的东西没多少。还好,我的队友们水平都很不错,我们组才可以完成。 其实我是有尝试负责推断输赢的部分,可是程序写出来了,却怎么改都不行。时间紧迫, 其他3名组员毅然确定派给我另一个光荣而又神圣的任务一一画棋盘。至于画棋盘嘛,我 的水平还够,完成得很快。但是我并没有因此而闲着,我还帮助其他组员出谋划策,检测程 序的完整性,以及排错,我还是有发挥自己的余光余热的,希望老师不要让我不过啊2部分void plmove() /*玩家 1 的移动*/ (switch(bioskey(0) (case ESC: closegraph(); exit(O);/*假如按键为 ESC 就退出嬉戏*/cas
16、e SP:/*落子*/if(aXY=6) pldel();p2tum();aXY=0;white();win(); p2move(); else plmoveQ;case A: /*向左移*/if(aXY=0)if(getx()=140) moveto(520,gety();moverel(-20,0);white(); else if(aXY=l)if(getx()= 140) moveto(520,gety();black();moverel(-20,0);white(); else yellow();if(getx()= 140) moveto(520,gety();moverel(-2
17、0,0);white(); plmove();case D:/*向右移*/if(aXY=O) if(getx()=500) moveto(l 20,gety();moverel(20,0);white();else if(aXY=l) if(getx()=500) moveto( 120,gety();black();moverel(20,0);white();else yellow();if(getx()=500) moveto(120,gety();moverel(20,0);white();plmove();case W: /* 向上移*/if(aXY=O) if(gety()=70)
18、moveto(getx(),450);moverel(0,-20);white();else if(aXY=l) if(gety()=70) moveto(getx(),450);black();moverel(0,-20);white();else yellow();if(gety()=70) moveto(getx0,450);moverel(0,-20);white();plmove();case S: /* 向下移*/if(aXY=O) if(gety()=430) moveto(getx(),50);moverel(0,20);white();else if(aXY=l) if(ge
19、ty()=430) moveto(getx(),50);black();moverel(0,20);white();else yellow();if(gety()=430) moveto(getx(),50);moverel(0,20);white(); plmove();default: plmove();)void p2move() /*玩家 2 的移动*/(switch(bioskey(0) /*假如按键为ESC就退出嬉戏*/(case ESC: closegraph(); exit(O);case ENTER: /*落子*/if(aX|Y=6) p2del();p 1 turn();a
20、XY=1 ;black();win();p 1 move(); else p2move();case LEFT:/* 向左移*/if(aXY= 1) if(getx()= 140) moveto(520,gety();moverel(-20,0);black();else if(aXY=0)if(getx()= 140)moveto(520,gety();if(getx()= 140)moveto(500,gety();white();moverel(-20,0);black();else yellow();if(getx()=140) moveto(520,gety();moverel(-2
21、0,0);black(); p2move();case RIGHT:/* 向右移*/if(aXY= 1) if(getx()=500) moveto(l 20,gety();moverel(20,0);black();else if(aXY=0) if(getx()=500) moveto(120,gety();white();moverel(20,0);black();else yellow();if(getx()=500) moveto( 120,gety();moverel(20,0);black();p2move();case UP: /*向上移刃if(aXY=1) if(gety()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 五子棋 源代码 设计 报告

限制150内