课程设计-c语言设计_五子棋游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河南城建学院

测绘与城市空间信息系

测绘程序设计

题目: 五子棋游戏

班级: 0614112 人数: 3人

成员:

学号:

指导老师:

时间:2012年6月

目录

1课程设计报告-------------------2 1.1问题描述----------------------2 1.2 任务分工- - - - - - - - - - - - - - - 2 1.3需求分析---------------------------3 1.4概要设计-----------------------3 1.5详细设计-----------------------4 1.6调试分析---------------------5 2源程序---------------------6 3程序的说明文件-------------------12 4课设总结-----------------------13

1.课程设计报告

1.1问题描述

连珠(五子棋)是有两个人在一盘棋上进行对抗的竞技运动。在对局开始时,先由用户选择哪方先开局,先开局一方将一枚棋子落在一点上,然后由另一方在对方棋周围的交叉点上落子,如此轮流落子,直到某一方首先在棋盘的直线、横线或斜线上形成连续的五子则该方就算获胜。此时,算法结束。当有任何一方想退出时,都可在算法中实现。

1.2 五子棋的背景

传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为15×15,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。

因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。

1.2 任务分工

组长:赵哲武

负责小组程序的输入和创新部分,分配任务,使工作衔接有序,以及程序的整体规划,将各部分文件衔接,查找错误,排版论文并完成

主函数的设及相关变量的定义,完成void attentoin()的设计细节设计,完成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.3需求分析

(1)、输出游戏规则并由用户决定是否遵守并开局。

(2)、要求动态画出棋盘大小。

(3)、画棋子并确定其颜色。

(4)、玩家轮流下棋。

(5)、判断键盘输入哪个键按规则执行操作

(6)、判断谁先落棋。

(7)判断赢家

1.4概要设计

流程图

流程图 1

Y Y

开始 西输出游戏规则 玩家遵守?

谁先下棋,输入棋盘大小s

Error!

画出s*s 大小的棋盘 用户决定谁先走

流程图2

1.5详细设计

本程序中包含一个主函数和七个子函数,它们的函数名及功能分别如下:

void draw_box();画棋盘,确定背景色和棋盘色按用户输入大小画出棋盘

void draw_cicle(int x,int y,int color);画棋子,确定棋子大小及颜色画出棋子。

void change();改变玩家,作战双方轮流下棋。

void judgewho(int x,int y);判断谁落棋,是1则画出白棋,是2则画出红棋。

void judgekey();判断键盘输入哪个键按规则执行操作,UP 键上移,DOWN键下移,LEFT键左移,RIGHT键右移,ESC键退出,SPACE 键确定棋子落点。

int judgeresult(int x,int y);判断赢家,横向竖向斜向够5个相同颜色的棋子则为赢家。

void attentoin();显示游戏规则,按上下左右键移动棋子,按空格键确定棋子落点,不能在棋盘外按空格键。

1.6调试分析

运行结果:屏幕显示:Please input who is first:1 or 2 当输入1时,白棋先走;当输入2时,红棋先走。屏幕显示:

Please 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

#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 N 19

int box[N][N],s; /*落子点*/

int step_x,step_y ;

int key ;

int flag,i,j ;

void 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();

相关文档
最新文档