c语言报告五子棋

上传人:hs****ma 文档编号:564869228 上传时间:2022-10-28 格式:DOCX 页数:16 大小:126.48KB
返回 下载 相关 举报
c语言报告五子棋_第1页
第1页 / 共16页
c语言报告五子棋_第2页
第2页 / 共16页
c语言报告五子棋_第3页
第3页 / 共16页
c语言报告五子棋_第4页
第4页 / 共16页
c语言报告五子棋_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《c语言报告五子棋》由会员分享,可在线阅读,更多相关《c语言报告五子棋(16页珍藏版)》请在金锄头文库上搜索。

1、C 语言课程设计报告题目简单的C五子棋设计者:方阳专业班级:软件工程1303班学号:指导老师:所属系部:计算机学院2014 年 6 月 25 日河南理工大学1、设计任务书1.1、 题目与要求:本人计划编写一个简单的 c 五子棋,应用 C 语言编写程序可以在计算机上实现 二人对弈五子棋功能。二人对弈五子棋程序由图像生成、光标移动与落子、判 断胜负和系统帮助等子程序构成;程序中应用了结构体、数组、全局变量、按 键处理和图形编程等元素和语句。程序通过棋盘和棋子图像生成、二人移子与 落子和判断胜负等功能的实现,在计算机上实现了二人五子棋对弈。1.2、 本系统涉及的知识点:结构、数组、循环、函数、分支、

2、2、功能设计根据功能需求,将程序分为图形显示、玩家控制、胜负判断和玩家计 分四个模块,以下分析各模块的需求。图形显示模块:程序开始运行时,给出欢迎及帮助界面;游戏开始后要求生成19X19的棋盘图像,并在棋盘上方提示当前落子方棋子颜色,游戏进行过程中,要求实时显示棋盘上已落下的棋子;分出胜负 后,要求给出游戏结束画面。玩家控制模块:程序开始时,需玩家确定而后开始游戏;游戏过程中, 两个玩家通过不同的按键移动光标,选择落子;游戏结束时,有玩家 选择是否开始新棋局。胜负判断模块:实时监测棋盘上棋子,一旦某一色棋子出现五子连线, 终止游戏程序,并着色连成一线的五子,弹出该色玩家胜出界面。玩家计分模块:

3、一方玩家再胜利后通过对文件的操作进行计分,并输 出于计分板上。2.1、算法设计根据程序需求分析结果,可以得出程序的总体结构图如图。22部分模块流程图mainwclcome& helpSinitializatio n初始化plrnuvej);玩家1操作board(); 画棋盘pciintO; 玩家计分win();p2 moved;胜负判断bcrder();show();界面初始化restart(;bye();亘肓丿1绐戏纭束程序流程图图2程序总像流程囲3、程序代码设计31图形模块 innitgr()/* BGI 初始化 */int gd = DETECT, gm = 0; /* 和 gd = V

4、GA,gm = VGAHI是同样效果 */ registerbgidriver(EGAVGA_driver);/*注册BGI驱动后可以不需要.BGI文件的支持运行*/ initgraph (&gd, & gm, ); welcome。/*欢迎界面*/ initgr() ;/*初始化 */clearviewport();/* 清屏 */setcolor(2);/* 设置颜色*/settextstyle(0,0,6);/* 样式 */outtextxy(180,180,Welcome);/*(立置以及内容 */ settextstyle(0,0,2);/* 文本样式*/outtextxy(240,

5、420,press any key to continue);/*位置以及内容*/ getch();/*press any key to continue*/ help()/*帮助界面,基本操作同welcome();函数*/initgr();clearviewport();setcolor(2);settextstyle(0,0,2);outtextxy(60,180,P2outtextxy(60,200,outtextxy(60,100,P1 move; W S A D ); outtextxy(60,120, set : space );move: up down left right )

6、; set: Enter);outtextxy(60,240,You can press Backspace to pull back!) ; outtextxy(60,280,When you want to quit the game,); outtextxy(60,300,press Esc.);outtextxy(220,440,press any key to continue); getch(); bye() /*say bye!,实现功能同上*/initgr();clearviewport();setcolor(4) ;settextstyle(0,0,6);outtextxy(

7、130,180,Thank you!);settextstyle(0,0,2);outtextxy(240,420,press any key to quit); getch(); board()/*画棋盘*/setcolor(14);/*线色*/setfillstyle(1,6);/*样式*/bar(120,50,520,450);/*棋盘底*/for(k=0;k21 ;k+)line(120+20*k,50,120+20*k,450) ; /*竖线*/ line(120,50+20*k,520,50+20*k) ;/*横线*/setfillstyle(1,9) ;bar(540,200,6

8、20,300);/*1p2p 两边框*/bar(20,200,100,300);setcolor(2);settextstyle(3,0,4); outtextxy(50,210,1p); outtextxy(570,210,2p);/*显示动态变色效果的标题*/*初始化中心位置*/*画定位框*/*p1 开始落子,游戏开始*/delay(50000);show();moveto(320,250);border();p1turn(); white() /*画白棋*/ setcolor(15);setfillstyle(1,15);circle(getx(),gety(),9);floodfill

9、(getx(),gety(),15);black() /*画黑棋*/setcolor(0);setfillstyle(1,0);circle(getx(),gety(),9);floodfill(getx(),gety(),0);green() /*用粉色着色连珠时的棋子*/setcolor(13);setfillstyle(1,13);circle(getx(),gety(),9); floodfill(getx(),gety(),13);plturn()/*画左边边框内白棋子*/setcolor(l5);setfillstyle(l,l5);circle(60,250,9);floodfi

10、ll(60,250,l5);settextstyle(3,0,4);outtextxy(20,280,white turn);p2turn() /*右边边框内黑色棋子*/setcolor(0); setfillstyle(1,0);circle(580,250,9);floodfill(580,250,0);settextstyle(3,0,4);outtextxy(540,280,black turn);pldel()/*不是lturn时候抹去左边边框内棋子*/ setfillstyle(1,9) ;floodfill(60,250,9);setcolor(9); settextstyle(

11、3,0,4);outtextxy(20,280,white turn);p2del()/*不是2turn时候抹去右边边框内棋子*/setfillstyle(l,9);floodfill(580,250,9) ;setcolor(9); settextstyle(3,0,4);outtextxy(540,280,black turn);border()/*画定位框*/setcolor(l4);line(getx()-8,gety()-9,getx()-3,gety()-9); /*通过画线函数画出定位框*/ line(getx()+8,gety()-9,getx()+3,gety()-9);li

12、ne(getx()-8,gety()-9,getx()-8,gety()-4);line(getx()+8,gety()-9,getx()+8,gety()-4);line(getx()-8,gety()+9,getx()-3,gety()+9); line(getx()+8,gety()+9,getx()+3,gety()+9);line(getx()-8,gety()+9,getx()-8,gety()+4); line(getx()+8,gety()+9,getx()+8,gety()+4);delborder() /*除去定位框*/setcolor(6);/*本质在于颜色覆盖*/lin

13、e(getx()-8,gety()-9,getx()-3,gety()-9);line(getx()+8,gety()-9,getx()+3,gety()-9);line(getx()-8,gety()-9,getx()-8,gety()-4);line(getx()+8,gety()-9,getx()+8,gety()-4);line(getx()-8,gety()+9,getx()-3,gety()+9);line(getx()+8,gety()+9,getx()+3,gety()+9);line(getx()-8,gety()+9,getx()-8,gety()+4); line(get

14、x()+8,gety()+9,getx()+8,gety()+4); drawmat(char *mat,int matsize,int x,int y,int color)/*点阵图所用标准输出方式*/int i,j,k,m;m=(matsize-1)/8+1;for(j=0;jmatsize;j+) for(i=0;im;i+)for(k=0;kk) putpixel(x+i*8+k,y+j,color);show()/*动态点阵图中文闪烁效果*/for(n=0;n3;n+) delay(10000);drawmat(wu32K,32,240,0,3);/*输出点阵图的“五”字 */ delay(10000);drawmat(zi32K,32,290,0,3);delay(10000);drawmat(qi32K,32,340,0,3);delay(10000);drawmat(wu32K,32,240,0,2);delay(10000);drawmat(zi32K,32,290,0,2);delay(10000);drawmat(qi32K,32,340,0,2);3.2 玩家操作模块p1move()switch(biosk

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号