C语言课程设计实验报告_第1页
C语言课程设计实验报告_第2页
C语言课程设计实验报告_第3页
C语言课程设计实验报告_第4页
C语言课程设计实验报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告课程名称: C语言课程设计 实验项目: 五子棋游戏设计 专业班级: 计专1502 姓 名: 孙奇 学 号: 实验室号: 实验组号: 实验时间: 批阅时间: 指导教师: 成 绩: 沈阳工业大学实验报告(适用计算机程序设计类)专业班级: 计专1502 学号: 姓名: 孙奇 实验名称:五子棋游戏设计1.实验内容:(1)掌握C语言的基本语法结构、程序设计方法和一些常见的算法;(2)掌握对程序排查错误的能力。2.实验内容:(1)实现双人对战的简单步骤和规则,能够判断输赢;(2)双方轮流使用键盘的“”、“”、“”、“”键控制棋子在屏幕上的位置,按“空格”键放置棋子,判断棋子应放置在棋盘范围内且不能已经有棋子,否则使用扬声器提示不能放置;(3)当一方的棋子数在行、列或对角线上连续达到5个(无禁手判断),则为胜方,在屏幕上显示胜利一方,按任意键退出程序。3. 实验方案(程序设计说明)(1)算法设计思路棋盘设计为1919格,初始状态光标在棋盘的左上,黑棋先走,轮流落子,当一方连成五子或下满棋盘时,游戏结束。当游戏一方胜利后显示胜利信息。从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别是0代表无棋子,1代表黑棋,2代表白棋。这样程序的主要工作是接收棋手按键操作,双方轮流使用键盘的“”、“”、“”、“”键控制光标移动,空格键表示落子。一旦接收到空格键,说明棋手落子,先判断是否是有效位置,也就是说棋子应在棋盘内或棋盘的空位置上,无效位置时利用扬声器发声警示。落子成功后,马上判断以该位置为中心的八个方向相邻的是否有相同颜色的棋子连成五子,如果连成五子,则游戏结束,输出胜利一方的信息。如果想在对弈的过程中退出游戏,可以按Esc键。(2)程序功能流程图4程序运行结果(1)规则界面(2)对弈界面(3)获胜界面5出现的问题及解决方法(1)游戏开始时,棋子原来初始在棋盘中央,一旦中央落子后,初始棋子与已有棋子重叠,为了解决问题将初始棋子移动到棋盘左上方棋盘以外。(2)棋子都为空心圆,在棋盘不好区分正在控制的棋子,改为已确定落子的棋子为实心圆,正在控制的棋子为空心圆。附件A 沈阳工业大学实验报告(适用计算机程序设计类)专业班级: 计专1502 学号: 姓名: 孙奇 实验程序:本程序在Windows XP SP3操作系统及Turbo C 2.0开发环境下调试通过。#include#include#include#include#include#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 SIZE 19int boxSIZESIZE;int step_x,step_y;int key;int flag=1;void attentoin();void draw_box();void draw_cicle(int x,int y,int color);void draw_slice(int x,int y,int color);void change();void judgewho(int x,int y);void judgekey();int judgeresult(int x,int y);void attention()char ch;window(1,1,80,25);textbackground(LIGHTBLUE);textcolor(YELLOW);clrscr();gotoxy(15,4);printf(Play Rules:);gotoxy(15,8);printf(1.Press Left,Right,Up,Down Key to move Piece);gotoxy(15,12);printf(2.Press Space to place the Piece);gotoxy(15,16);printf(3.DO NOT press Space outside of the chessboard);gotoxy(15,20);printf(Do you accept the above Playing Rules? Y/N:);while(1)gotoxy(60,20);ch=getche();if (ch=Y | ch=y)break;else if(ch=N | ch=n)window(1,1,80,25);textbackground(BLACK);textcolor(LIGHTGRAY);clrscr();exit(0);gotoxy(51,12);printf( );void draw_box()int x1,x2,y1,y2;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=18;x1=18;x1+)line(x1+JZ)*BILI,(y1+JS)*BILI,(x1+JZ)*BILI,(y2+JS)*BILI);for(x1=1,y1=1,x2=18;y1=18;y1+)line(x1+JZ)*BILI,(y1+JS)*BILI,(x2+JZ)*BILI,(y1+JS)*BILI);for(x1=1;x1=18;x1+)for(y1=1;y1=18;y1+)boxx1y1=0;void draw_circle(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 draw_slice(int x,int y,int color)x=(x+JZ)*BILI;y=(y+JS)*BILI;setcolor(color) ;setfillstyle(SOLID_FILL,color);circle(x,y,8);floodfill(x,y,color);setcolor(color);setfillstyle(SOLID_FILL,color);pieslice(x,y,0,360,8);setcolor(color);void judgekey()int i;int j;switch(key)case LEFT :if(step_x-1=1;i-)if(boxij=0)draw_circle(step_x,step_y,LIGHTBLUE);break;if (i18)break;elsefor(i=step_x+1,j=step_y;i18) break;step_x=i;judgewho(step_x,step_y);break;case DOWN :if(step_y+1)18)break;elsefor(i=step_x,j=step_y+1;j18)break;step_y=j;judgewho(step_x,step_y);break;case UP :if(step_y-1)=1;j-)if(boxij=0)draw_circle(step_x,step_y,LIGHTBLUE);break;if(j=1 & step_x=1 & step_y=1;j-)if(boxjk=flag)n1+;elsebreak;/*水平向右数*/for(j=x,k=y;j=5)return(1);break;/*垂直向上数*/n1=0;n2=0;for(j=x,k=y;k=1;k-)if(boxjk=flag)n1+;elsebreak;/*垂直向下数*/for(j=x,k=y;k=5)return(1);break;/*向左上方数*/n1=0;n2=0;for(j=x,k=y;j=1,k=1;j-,k-)if(boxjk=flag)n1+;elsebreak;/*向右下方数*/for(j=x,k=y;j=18,k=5)return(1);break;/*向右上方数*/n1=0;n2=0;for(j=x,k=y;j=1;j+,k-)if(boxjk=flag)n1+;elsebreak;/*向左下方数*/for(j=x,k=y;j=1,k=5)return(1);break;return(0);break;void main()int gdriver=VGA,gmode=VGAHI;clrscr();attention();initgraph(&g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论