C语言图形五子棋课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言图形五子棋课程设
计报告
This model paper was revised by the Standardization Office on December 10, 2020
C语言课程设计报告
五子棋
院系:软件学院专业:软件工程
班级:102032 学号:指导老师:王星
摘要
五子棋是一种两人对弈的纯策略型棋类游戏,应用C语言编写程序可以在计算机上实现二人对弈五子棋功能。二人对弈五子棋程序由图像生成、光标移动与落子、判断胜负和系统帮助等子程序构成;程序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和语句。程序通过棋盘和棋子图像生成、二人移子与落子和判断胜负等功能的实现,在计算机上实现了二人五子棋对弈。
Abstract
Gobang is a traditional checker-type game in which the lining up of
five pieces in a straight line scores victory. And C language can accomplish a 2-player gobang on computers. This 2-player gobang program contains 4 main sections, they are, graphics, movement and selection, victory judgment and helping system. Several elements and sentences of C programming language such as structural element, array, global variables, press processing and Graphics Programming are also applied in the program. With the accomplishment of the three main subprograms, namely, checker board and pieces construction,
play ers’ step-selection and victory judgment, a whole program of gobang is established and gobang is available on computers.
目录
第1章:需求分析
五子棋背景
传统五子棋的与围棋相同,分为黑白两色,棋盘为15×15,棋子放置于棋盘线上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。
因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。
程序设计
本程序设计为人与人对弈,一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己的棋子五子相连,首先实现五子相连的一方获胜。程序执行过程中,要求棋盘、棋子时时可见,并且人可以通过按键盘按键移动光标,摆放棋子。
程序需求分析
根据功能需求,将程序分为图形显示、玩家控制、胜负判断和玩家计分四个模块,以下分析各模块的需求。
图形显示模块:程序开始运行时,给出欢迎及帮助界面;游戏开始后要求生成19×19的棋盘图像,并在棋盘上方提示当前落子方棋子颜色,游戏进行过程中,要求实时显示棋盘上已落下的棋子;分出胜负后,要求给出游戏结束画面。
玩家控制模块:程序开始时,需玩家确定而后开始游戏;游戏过程中,两个玩家通过不同的按键移动光标,选择落子;游戏结束时,有玩家选择是否开始新棋局。
胜负判断模块:实时监测棋盘上棋子,一旦某一色棋子出现五子连线,终止游戏程序,并着色连成一线的五子,弹出该色玩家胜出界面。
玩家计分模块:一方玩家再胜利后通过对文件的操作进行计分,并输出于计分板上。程序流程设计
根据程序需求分析结果,可以得出程序的总体结构图如图1,程序总体流程图如图2。
图1第2章:概要设计
各类头文件,变量及宏定义
#include""
#include ""
#include ""
#include <>
#include<>
#define closegr closegraph
/*定义1号玩家的操作键键码*/
#define W 0x1177/*上移--'W'*/
#define S 0x1f73/*下移--'S'*/
#define A 0x1e61/*左移--'A'*/
#define D 0x2064/*右移--'D'*/
#define SP 0x3920/*落子--空格键*/
/*定义2号玩家的操作键键码*/
#define UP 0x4800/*上移--方向键up*/
#define DOWN 0x5000/*下移--方向键down*/ #define LEFT 0x4b00/*左移--方向键left*/ #define RIGHT 0x4d00/*右移--方向键right*/ #define ENTER 0x1c0d/*落子--回车键Enter*/ #define ESC 0x011b/*退出*/
#define Y 0x1579/*YES*/
#define N 0x316e/*NO*/
#define BACK 0xe08 /*悔棋*/
#define DEL 0x5300 /*删除比分*/
全局变量
int ch,dh,del;/*文件操作计分变量*/
int k,i,j,n,t;/*控制变量*/
int a[20][20];/*棋盘数组*/
图形模块
棋盘的显示由游戏开始与结束部分控制,棋子以及棋子定位框的显示与保留由玩家操控部分决定,本章只列写棋盘与棋子的显示程序。
图形模块主要由以下函数组成:
initgr();/*图形界面初始化函数*/
Welcome();/*欢迎界面*/
Help();/*帮助界面*/
board();/*画棋盘*/
white();/*画白棋子*/
black();/*画黑棋子*/
bye();/*结束界面*/
green();/*连珠时着色相应棋子*/
show();drawmat();/*显示中文的点阵图函数,以及产生动态变色效果*/