c语言程序的设计五子棋
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
伊犁师学院高级语言课程设计报告
学院:电子与信息工程学院
学生:
学号:
专业届别:
指导教师:
完成时间:
五子棋游戏
1 设计目的及要求
目的:
(1)学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
(2)全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计.
(3)掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。
(4)运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。
要求:
(1)独自设计、编制、调试出一款五子棋游戏。
(2)要求该游戏具有趣味性和可操作性,能够正常运行。其中用到C语言中的各种语句、结构。(如其中需要注意全局变量和局部变量的申明,数组的使用等)(3)五子棋游戏要求能够进入欢迎界面,当有五颗相同颜色的棋子连续连成五颗,就胜出。
任务:
五子棋是一种传统的棋盘游戏,是我国古代传统的黑白棋种之一发展于日本,流行于欧洲任务容就是设计一款老少皆宜、能够锻炼个人策略谋划能力棋。有助于孩子开发智力,或者闲暇时打发时间。原则:
(1)系统性。系统作为统一整体而存在,因此,在设计中,要从系统的角度考虑。系统的代码要统一,传递语言要尽可能一致。
(2)可靠性。可靠性是指系统抵御外界干扰的能力及外界干扰时的恢复能力。
(3)规性。游戏的运用以吸引玩家的乐趣为前提,一方面,系统设计应尽量避免不必要的复杂化,另一方面模块应尽量简洁,以缩短处理流程。
2 开发工具
C语言
3 应用平台
Windows xp
4 功能设计
游戏分析:
五子棋是两人之间的竞技游戏,该五子棋程序基本上实现了五子棋游戏的功能,有双方下棋之前的欢迎界面及下棋过程中的棋盘界面,还有最终会判断出输赢。同时,该游戏采用了二维坐标实现的,明了易懂,方便玩家在游戏过程中的基本操作,使游戏更加简便。细节方面,该程序有实时储存功能,随时记录。另外考虑到游戏挺简单的,就没有设置悔棋的相关模块。
游戏介绍:
该游戏是简单的双人五子棋,所实现的功能是能够显示欢迎界面,选择是否进行游戏,进入游戏界面以后,玩家开始下棋。玩家输入坐标则会在棋盘上显示棋子,(若是输入的坐标超出棋盘或者该位子已经有子则会提示玩家重新输入坐标位子),若输入则退出游戏。
4.1 算法设计
程序说明:
五子棋是一款经典的益智类游戏,通常是黑棋先行;五子棋专用盘为15*15方格,五个子的连接方向为横、竖、斜,当任一方的五个子在各方向上连成一线时,则该方获胜。
程序要求:
按照程序说明编写五子棋程序,要求可以进行双人之间的游戏。程序输出:
输出棋盘、棋子,并能够进行相应的操作。
4.2流程图模块
图1:程序整体设计思路流程图
图2:绘图过程的算法流程
否
5 程序调试及运行
5.1 程序运行结果
图1 初始化界面
图2 运行游戏的界面5.2 程序代码
#include “stdio.h”
#include”graphics.h”
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
#define ENTER 0x1c0d
int x=-1,y=0;
int max_x,max_y;
int board_flag[15][15];
void draw_board();
void show_init(int pat);
void hide();
void show(int pat);
void move();
int is_win(int pat);
void main()
{
int driver=DETECT,mode;
int i,j;
for(i=0;i<15;i++)
for(j=0;j<15;j++)
{
board_flag[i][j]=0;
}
initgraph(&driver,&mode,””);
draw_board();
show_init(0);
move();
getch();
closegraph();
}
void draw_board()
{
int i;
max_x=getmaxx();
max_y=getmaxy();
setfillstyle(1,BLUE);
bar(0,0,max_x,max_y);
for(i=-7;i<=8;i++)
{
line(max_x/2-7*26,max_y/2+i*26,max_x/2+8*26,max_y/2+i*26); line(max_x/2+i*26,max_y/2-7*26,max_x/2+i*26,max_y/2+8*26); }
}
void show_init(int pat)
{
setcolor(BLUE);
if(pat==0)
{
setfillstyle(1,BLACK);
}
else
{
setfillstyle(1,WHITE);
}
x=-1;
y=0;
fillellipse(max_x/2-8*26+13,max_y/2-7*26+23,12,12);