版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计-c语言设计-五子棋游 戏河南城建学院测绘与城市空间信息系测绘程序设计题 目:五子棋游戏班 级:0614112人 数:3 人成 员:学号:指导老师 时间:2012年6月41 课程设计报告21. 1 问题描述21.2 任务分工 21.3 需求分析 31.4概要设计31.5详细设计41.6调试分析52 源程序63 程序的说明文件12134课设总结1 .课程设计报告1.1 问题描述连珠(五子棋)是有两个人在一盘棋上进行对抗的竞技运动。在对局 开始时,先由用户选择哪方先开局,先开局一方将一枚棋子落在一点 上,然后由另一方在对方棋周围的交叉点上落子,如此轮流落子,直到某一方首先在棋盘的直线、横线
2、或斜线上形成连续的五子则该方就 算获胜。此时,算法结束。当有任何一方想退出时,都可在算法中实 现。1.2 五子棋的背景传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为15X15,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下 一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一 排者为胜。因为传统五子棋在落子后不能移动或拿掉, 所以也可以用纸和笔 来进行游戏。1.3 任务分工组长:赵哲武分配任务,使工作衔接有序,以负责小组程序的输入和创新部分,及程序的整体规划, 将各部分文件衔接, 查找错误, 排版论文并完成主函数的设及相关变量的定义,完成void attentoin() 的
3、设计细节设计,完成void draw_box() , void change() ; void judgekey()的设计并调试并运行程序,完成实验报告。组员:李志强完成 void judgewho(int x,int y) 的设 计, 并作出自己部分的编程代码,流程图。组员:夏韦程完成 void draw_cicle(int x,int y,int color) 的设计,并作出自己部分的编程代码,流程图。组员:李少帅完成 int judgeresult(int x,int y) 的设计。1.4 需求分析( 1) 、输出游戏规则并由用户决定是否遵守并开局。( 2) 、要求动态画出棋盘大小。(
4、3) 、画棋子并确定其颜色。( 4) 、玩家轮流下棋。( 5) 、判断键盘输入哪个键按规则执行操作( 6) 、判断谁先落棋。( 7)判断赢家1.4 概要设计流程图足了棋游戏流程图1流程图2141.5 详细设计本程序中包含一个主函数和七个子函数,它们的函数名及功能分别如下:void draw_box(); 画棋盘, 确定背景色和棋盘色按用户输入大小画出棋盘void draw_cicle(int x,int y,int color); 画棋子,确定棋子大小及颜色画出棋子。void change(); 改变玩家,作战双方轮流下棋。void judgewho(int x,int y); 判断谁落棋,是
5、1 则画出白棋,是2 则画出红棋。void judgekey(); 判断键盘输入哪个键按规则执行操作, UP 键上移,DOW犍下移,LEFT键左移,RIGHTS右移,ESC键退出,SPACE 键确定棋子落点。int judgeresult(int x,int y); 判断赢家,横向竖向斜向够5 个相同颜色的棋子则为赢家。void attentoin(); 显示游戏规则,按上下左右键移动棋子,按空格键确定棋子落点,不能在棋盘外按空格键。3 .6 调试分析运行结果:屏幕显示: Please input who is first:1 or 21 时,白棋先走;当输入2 时,红棋先走。屏幕显示: Pl
6、ease input the size of chessbox:从键盘输入s 值,则棋盘大小为 s*s 型。屏幕显示: Left, Right, Up,Down KEY to move, Space to put, ESC-quit 及棋盘,棋子, 用上下左右键控制棋子向, 用空格键确定棋子的落点 。当白棋赢时,显示The White Win ! 当红棋赢时,显示The Red Win !算法改进思想: 将棋盘由原先的固定大小改进为可动态变化,由原来固定的白棋先走改进为让用户可以选择哪方先落子。2源程序#include<stdio.h>#include<stdlib.h>
7、;#include<graphics.h>#include<bios.h>#include<conio.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b#define SPACE 0x3920#define BILI 20#define JZ 4#define JS 3#define N 19int boxNN,s;/*落子点 */int step_x,step_y ;int key ;int flag,i,j ;vo
8、id draw_box();void draw_cicle(int x,int y,int color);void change();void judgewho(int x,int y);void judgekey();int judgeresult(int x,int y);void attentoin();void attentoin()/*游戏规则 */char ch ;printf("Play attentoins:nn");printf("1. Press Left,Right,Up,Down Key to move Piecenn")*/*
9、方向键移动棋子printf("2. Press Space to place the Piecenn");/* 空格键确定棋子落点 */printf("3. DO NOT press Space outside of the draw_boxnn");/*棋盘外不能落棋*/printf("Do you accept the above Playing attentoins? Y/Other:");/*是否遵守 */while(1) ch=getche();if(ch='Y'|ch='y') break
10、;else exit(0);printf("nnwhat size of the draw_box:");scanf("%d",&s);/*printf("nnwho is the frist:1 or 2? ");/*while(1) scanf("%d",&flag);if(flag!=1&&flag!=2) printf("Error!n"); else break;输出棋盘大小*/谁先落子 */void draw_box()/*int x1,x2,y1,y
11、2 ;setbkcolor(LIGHTBLUE);/*setcolor(YELLOW);/*gotoxy(7,2);画出棋盘 */背景色 */文本色 */printf("Left, Right, Up, Down KEY to move, Space to put, ESC-quit.");for(x1=1,y1=1,y2=s;x1<=s;x1+)line(x1+JZ)*BILI,(y1+JS)*BILI,(x1+JZ)*BILI,(y2+JS)*BILI);/*画竖线 */for(x1=1,y1=1,x2=s;y1<=s;y1+)line(x1+JZ)*BIL
12、I,(y1+JS)*BILI,(x2+JZ)*BILI,(y1+JS)*BILI); /* for(x1=1;x1<=s;x1+) for(y1=1;y1<=s;y1+) boxx1y1=0 ;/*void draw_cicle(int x,int y,int color)/*setcolor(color);/*setlinestyle(SOLID_LINE,0,1);/*x=(x+JZ)*BILI ;y=(y+JS)*BILI ;circle(x,y,8);/*void judgekey()switch(key)case LEFT :/*if(step_x-1<0) bre
13、ak ;elsefor(i=step_x-1,j=step_y;i>=1;i-)if(boxij=0) draw_cicle(step_x,step_y,LIGHTBLUE); break ;if(i<1)break ;step_x=i ;judgewho(step_x,step_y);break ;case RIGHT :/*if(step_x+1>s) break ;elsefor(i=step_x+1,j=step_y;i<=s;i+)if(boxij=0)画横线 */棋盘初始化 */棋子 */棋子颜色 */线条类型 */画半径为8的棋子*/左键控制棋子左移*/右
14、键控制棋子右移*/ draw_cicle(step_x,step_y,LIGHTBLUE); break ; if(i>s)break ;step_x=i ;judgewho(step_x,step_y);break ;case DOWN :/*下键控制棋子下移 */if(step_y+1>s) break ;elsefor(i=step_x,j=step_y+1;j<=s;j+)if(boxij=0) draw_cicle(step_x,step_y,LIGHTBLUE);break ; if(j>s)break ;step_y=j ;judgewho(step_x,
15、step_y);break ;case UP :/*上键控制棋子上移*/if(step_y-1<0) break ;elsefor(i=step_x,j=step_y-1;j>=1;j-)if(boxij=0) draw_cicle(step_x,step_y,LIGHTBLUE); break ; if(j<1)break ;step_y=j ;judgewho(step_x,step_y);break ;case ESC : break ;/*ESC键退出游戏*/case SPACE :/*if(step_x>=1&&step_x<=s&
16、;&step_y>=1&&step_y<=s)if(boxstep_xstep_y=0)boxstep_xstep_y=flag ;if(judgeresult(step_x,step_y)=1)空格键控制落子*/sound(1000);delay(1000);nosound();gotoxy(30,4);cleardevice();if(flag=1) settextstyle(3,0,5);outtextxy(120,120,"The White Win !"); /* setcolor(14);if(flag=2) settexts
17、tyle(3,0,5);outtextxy(120,120,"The Red Win !"); /*setcolor(15);settextstyle(3,0,5);getch();exit(0);change();break ;elsebreak ;void change()/*if(flag=1)flag=2 ;elseflag=1 ;void judgewho(int x,int y)if(flag=1)draw_cicle(x,y,15);/*if(flag=2)draw_cicle(x,y,4);/*显示白棋赢*/显示红棋赢*/改变玩家 */画白棋 */画红棋 *
18、/int judgeresult(int x,int y) int j,k,n;while(1)n=0 ;for(j=x,k=y;j>=1;j-)/*if(boxjk=flag)n+;elsebreak ;for(j=x,k=y;j<=s;j+)/*if(boxjk=flag)n+;elsebreak ;if(n>5) return(1);n=0 ;for(j=x,k=y;k>=1;k-)/*if(boxjk=flag)n+;elsebreak ;for(j=x,k=y;k<=s;k+)/*if(boxjk=flag)n+;elsebreak ;if(n>5
19、) return(1);水平向左数*/水平向右数*/垂直向上数*/垂直向下数*/n=0 ;for(j=x,k=y;j>=1,k>=1;j-,k-)/*if(boxjk=flag)n+;*/16elsebreak ;for(j=x,k=y;j<=s,k<=s;j+,k+)/*if(boxjk=flag)n+;elsebreak ;if(n>5) return(1);n=0 ;for(j=x,k=y;j<=s,k>=1;j+,k-)/*if(boxjk=flag)n+;elsebreak ;for(j=x,k=y;j>=1,k<=s;j-,k+
20、)/*if(boxjk=flag)n+;elsebreak ;if(n>5) return(1);return(0);void main()int gdriver=VGA,gmode=VGAHI;/*clrscr();attentoin();initgraph(&gdriver,&gmode,"c:tc");/*draw_box();dostep_x=0,step_y=0 ;/*judgewho(step_x-1,step_y-1);do*/*/*/定义图形适配器 */*/棋盘初始化 */20while(bioskey(1)=0);key=bioskey(0);judgekey();while(key!=SPACE&&key!=ESC);while(key!=ESC);closegraph();/*关闭图形 */3 程序的说明文件void draw_box();7v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 污水处理站操作运行管理办法
- 重大事故隐患排查治理实施方案
- 雇主家政需求匹配服务操作指引
- 防汛抢险应急救援工作方案
- 骨密度检测数据解读分析手册
- 中医基础题目及分析
- 猪场生物安全防控制度
- 噪声作业岗位听力保护措施
- 体检报告解读专业分析手册
- 高效复合肥采购验收技术标准
- 2026年“建安杯”信息通信建设行业安全竞赛核心考点题库
- T-CCSAS 062-2026《行为安全观察与沟通实施指南》
- 备战2026河南中考英语:补全对话7大场景高频问句及答语梳理+解题技巧
- 应急演练组织规范及流程
- 砖混转框架施工方案样本
- T-CHAS 10-2-19-2023 中国医院质量安全管理 第2-19部分:患者服务 内镜治疗
- 2025年农产品质量与安全管理试卷及答案
- DB11∕T 1072-2025 城市桥梁工程施工质量检验标准
- 中国农业大学强基计划真题笔试
- 2025年公安院校联考考试面试试题及答案
- 雨课堂学堂云在线《经典与思考-人文清华大师面对面 》单元测试考核答案
评论
0/150
提交评论