C语言程序设计之五子棋

C语言程序设计之五子棋
C语言程序设计之五子棋

安徽大学

电子信息工程学院

C语言程序设计

指导老师:梁栋

小组成员:高丽蓉高雪朱楠丁昊刘佳慧阮超

C语言程序设计之五子棋

摘要:本程序是一种两人对弈的纯策略型棋类游戏,规则简单,变化多端,非常富有趣味性和消遣性。主要应用了Visual C++编程来完成这个游戏的设计的。本文主要介绍了本游戏的开发环境Microsoft Visual C++6.0,使用当前优秀的开发工具VC++编程基于MFC的基本对话框,编写了一个五子棋的游戏软件。包含了五子棋程序的棋盘初始化、游戏规则、胜负判断方法。

关键词:五子棋游戏应用程序、初始化、规则、图形函数、判断

1.问题描述

在Visual C++ 6.0编译器的基础上,基于MFC的基本对话框,编写一个五子棋的游戏软件。

该游戏应该符合以下要求:

1.1游戏模式:人先下棋,电脑在人下子后会随后下棋。

1.2人机对弈:完成人和计算机的对弈,用黑色棋子表示人,白色棋子表示电脑,电脑要具有一定的人工智能,能够可以与人对弈一段时间。

1.3棋盘:要求棋盘绘制美观耐看。

1.4判断输赢:当一方有五个相邻的棋子连成一条线时,计算机能判定输赢,并能结束本次游戏并重新开始。

1.5存储功能:要求五子棋有存储功能,可以将进行中的游戏存储在棋盘上,也可以读取已存盘的游戏。

1.6弹窗功能:要求制作按钮,实现弹框功能,可以弹出指导老师与小组成员的信息。

2.详细设计

2.1总体设计

程序流程图如下图所示:

2.1.1 新建工程,选MFC AppWizard(exe),添上工程名,确定。

2.1.2选基本对话框,完成,确定

2.1.3插入位图

我们选择的方式从网上搜寻一些图片,然后直接贴图。先插入位图(BMP格式)。

位图插入后会自动赋予ID值,我们将其修改一下:分别修改为BLACK BOARD WHITE CLEAR

2.1.4添加DRAW函数

添加成员函数Draw:

然后添加所编的程序代码。

2.1.5在OnPaint函数中加入代码画图

在OnPaint函数中加入以下代码:

CDC *pDC;

pDC=GetDC();

Draw(0,0,IDB_CLEAR,pDC);

Draw(13,13,IDB_BOARD,pDC);

for(int i=0;i<15;i++)

for(int j=0;j<15;j++)

chess[i][j]=0;

2.1.6添加OnLButtonUp 函数

添加消息处理函数:

然后添加所编的程序代码。

2.1.7添加iswin函数

然后添加所编的程序代码

2.1.8重复步骤(7),依次添加search,searchvalue,getsorce,AIplay 函数。

2.1.9复制按钮确定,并粘贴两次,并改名为“读档”“保存”“指导老师”“小组成员”

2.1.10给这四个按钮建立类向导

添加关联函数

然后添加所编的程序代码。

2.1.11在OnInitDialog函数中加入以下代码

MoveWindow(0,0,515,580);

CenterWindow();

GetDlgItem(IDC_SAVE)->MoveWindow(10,515,55,24);

GetDlgItem(IDC_OPEN)->MoveWindow(70,515,55,24);

GetDlgItem(IDC_teacher)->MoveWindow(345,515,55,24);

GetDlgItem(IDC_students)->MoveWindow(405,515,55,24);

2.1.12更改icon图标

2.2数据结构设计

2.3函数功能描述

OnInitDialog():通过这个函数,我们定义了窗口的大小、窗口所处的位置、保存按钮的放置、读档按钮的放置、指导老师按钮的放置以及小组成员按钮的放置。

OnPaint():通过这个函数,我们在窗口上画出了棋盘。

Draw(int x, int y, UINT bitmap, CDC *pDC):通过这个函数,我们可以画出各种图片。

OnLButtonUp(UINT nFlags, CPoint point):通过这个函数,我们可以通过鼠标控制在窗口上下子。

iswin(int i, int j):通过这个函数,我们可以判断胜负。

search(int i, int j, int m, int n):通过这个函数,我们可以判断棋子周围的情况。

AIplay():通过这个函数,我们设计了一个人工智能来与人对弈。searchvalue(int &best_i, int &best_j, int color):寻找棋子的有利位置getscore(int i, int j, int color):计算这个函数位置的分数

OnSave():通过这个函数,我们实现了存储的功能。

OnOpen():通过这个函数,我们实现了打开存储的功能。Onteacher():通过这个函数,我们实现了”指导老师“的弹出窗口。Onstudents():通过这个函数,我们实现了”小组成员“的弹出窗口。

3.总结

本作品是一个简单的双人五子棋游戏,运行程序后直接进入棋盘界面,最终会判断出输赢。

主要设计内容概括如下:

3.1在初期,本小组认真的对五子棋进行了研究分析,参考了可供参考的资料和程序,确定了运行步骤和流程,并分配了各自的任务。要求每位组员细致了解部分MFC函数,以便实现五子棋游戏的编译。如定义好窗口大小及所处位置、保存按钮的放置、读档按钮的放置、指导老师按钮的放置以及小组成员按钮的放置等。通过各种函数实现画出棋盘、用鼠标控制落子、判断棋子周围的情况、判断胜负、实现存储、打开存储等功能。搜寻图片,找到适合用于五子棋游戏中棋盘、棋子的图片。分配任务给各个小组成员,分别编写五子棋程序所需要的函数。

3.2期间程序需要添加很多成员函数及消息处理函数,如Draw函数、OnPaint函数、iswn函数等。

3.3运行五子棋并进行测试,每位组员负责的程序部分写好之后,再将大家的程序汇总,但发现有些人的模块编写有误,导致程序无法运行,因此大家在一起讨论与修改并回去思考。经过多次测试并改进程序部分函数,程序已经可以运行

了。考虑到五子棋游戏比较简单,就没有设置悔棋环节。

3.3在做C语言程序设计之前,编辑游戏在组里的每个成员看来,都是遥不可及的。但通过这次设计我明白了并不是如此,只要团队合作也可以搞定,我多学了许多课上没有的知识,比如怎么用C程序画图、写出文本等。通过C语言课程设计,我们对语言这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们电子专业的学习中占据着十分重要的地位。同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。只要多实践,多编写程序,才能更好的掌握书本上的东西。

参考文献:

梁栋、李新华等,C语言程序设计,中国电力出版社,2009年2月谭浩强,C程序设计(第二版),清华大学出版社,2005年

邓莉,C++程序设计(第四版),清华大学出版社,2010年

侯俊杰,深入浅出MFC(第二版),华中科技大学出版社,2001年

葛亮,Visual C++从入门到实践,清华大学出版社,2007

五子棋c课程设计

目录第一章:课程设计目的和要求 (2) 1.1数据结构课程设计的目的 (2) 1.2数据结构课程设计实现的要求 (2) 第二章:课程设计任务内容 (3) 2.1五子棋对弈系统 (3) 第三章:详细设计说明 (4) 3.1功能设计 (4) 3.2五子棋对弈系统流程图 (4) 3.3软件中实现各项功能的函数与程序代码 (5) 第四章:程序运行环境说明 (10) 4.1程序运行环境说明及出现的问题 (10) 4.2运行结果 (10) 第五章:课程设计心得与体会 (14) 附录 (15) 源程序: (16) 五子棋 第一章课程设计目的和要求 1.1数据结构课程设计的目的 进一步培养结构化程序设计的思想,加深对高级系统语言基本语言要素和控制结构的理解,针对数据结构中的重点和难点内容进

行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。 此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。 1.2数据结构课程设计实现的要求 使用C++语言编写一个基于控制台的简单程序,使学生掌握简单的程序设计技巧。同时设计一个简单的五子棋对弈系统,可以实现五子棋的基本功能,是一款娱乐用的小型程序。 第二章课程设计任务内容 2.1五子棋对弈系统 设计一个五子棋系统程序,实现对五子棋进行运行。 基本要求:五子棋是有两个人在一盘棋上进行对抗的竞技活动。在对局开始时,先由用户选择哪方开局,先开局一方将一枚棋子落在一点上,然后由另一方在对方棋周围交叉点上落子,如此轮流落子,知道某一方首先在棋盘的直线、横线或斜线上形成连续的五子则该方程就算获胜。 此时算法结束,当有任何一方退时出,都可在算法中实现。 第三章详细设计说明 3.1功能设计 (1)由两个玩家分别下棋,当某一玩家五子相连,则赢。

C语言图形五子棋课程设计报告

北京师范大学C语言课程设计汇报 课题名称:游戏五子棋 指导老师:尹乾 课题组员:罗福莉赵帅帅何虹达院系:信息科学和技术 时间:20XX.3.15-20XX.4.20

摘要 五子棋是一个两人对弈纯策略型棋类游戏,应用C语言编写程序能够在计算机上实现二人对弈五子棋功效。二人对弈五子棋程序由欢迎界面显示、游戏界面生成、光标移动和落子、判定胜败、悔棋功效、提供音效等子程序组成;程序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和语句。程序经过棋盘和棋子图像生成、二人移子和落子和判定胜败等功效实现,在计算机上实现了二人五子棋对弈。

目录 摘要-------------------------------------------------------------------------------------- 2 第1章:需求分析-------------------------------------------------------------------- 3 1.1五子棋背景-------------------------------------------------------------------- 3 1.2 五子棋需求分析和步骤设计 -------------------------------------------- 4 第2章:概要设计-------------------------------------------------------------------- 7 2.1 各类头文件和全局变量--------------------------------------------------- 7 2.2 画面显示模块---------------------------------------------------------------- 8 第3章:具体设计------------------------------------------------------------------ 11 3.1 玩家操作模块-------------------------------------------------------------- 11 3.2音效提供模块 -------------------------------------------------------------- 11 3.3 胜败判定模块-------------------------------------------------------------- 12 第4章:调试分析------------------------------------------------------------------ 13 4.1 图形模块 -------------------------------------------------------------------- 13 4.2 玩家操作模块-------------------------------------------------------------- 13 4.3 胜败判定模块-------------------------------------------------------------- 14 第5章:用户手册------------------------------------------------------------------ 14

C课程设计五子棋

/*这是我们c++课程设计五子棋,我用了许多循环语句,可能比较繁碎, 不过仔细分析的话,还是挺简单的。如果有什么不懂的地方可以加我q 1570169994 */ #include #include #include // 这些是一些必要的头文件 #include #include using namespace std; #define M 15 //此处定义棋盘大小为15*15,自己视情况而定 typedef struct Node { int a; //这里定义的结点在悔棋时要用到 int b; struct Node *next; }node; class Qipan { //定义一个棋盘类,这个类里有实现不同功能的函数 public: int a,b,t; //棋子的坐标我们用a,b表示,t表示接收的输入信息 int player; //player为1时,代表绿方下棋,2代表红方 int name[M][M]; //棋盘用一个15*15的二维数组表示 void reset(); //此函数实现重置功能,即将棋盘上的棋子清零 void chess(); //此函数实现下棋功能,是非常重要的 void win(); //此函数实现判断功能,即每当一方落子后,都要调用此函数 void explain(); //此函数是解释说明的函数 void output(int count[]); //此函数输出赢的一方 void gotoxy(int x,int y) { HANDLE hout; //这是实现光标移动的函数,具体可以百度一下 COORD coord; //x,y即为棋子的坐标,和a,b一样 coord.X = x; //此函数是将当前光标移动到x,y坐标处 coord.Y = y; hout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hout,coord); } }; // main 函数 int main() { Qipan qipan; //定义一个棋盘对象 do { system("cls"); //清屏函数 cout<<"1.开始游戏 "<

C语言五子棋游戏源代码

ncl ud e< #define N 10 void welcome(); void initqipan(); void showqi(int i); void save(int p); void panduan(int p); void heqi(); void over(); int zouqihang(); int zouqilie(); /****************** 结构体**************** */ struct zuobiao { int x[N*N]; int y[N*N]; }weizhi[N *N]; 主函数**************** */ /****************** void main() { int p=0; welcome();

for(p=1;p<=N*N;p++) { weizhi[p].x[p]=zouqihang(); weizhi[p].y[p]=zouqilie(); save(p); showqi(p); panduan(p); } if(p==N*N) heqi(); over(); } /****************** 建立棋盘*****************/ void initqipan() { int i,j; for(i=0;i

for(i=1;i

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

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

河南城建学院 测绘与城市空间信息系 测绘程序设计 题目: 五子棋游戏 班级: 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 任务分工 组长:赵哲武 负责小组程序的输入和创新部分,分配任务,使工作衔接有序,以

c语言程序设计五子棋

伊犁师范学院高级语言课程设计报告 学院:电子与信息工程学院 学生姓名: 学号: 专业届别: 指导教师: 完成时间:

五子棋游戏 1 设计目的及要求 目的: (1)学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。 (2)全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计. (3)掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。 (4)运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。 要求: (1)独自设计、编制、调试出一款五子棋游戏。 (2)要求该游戏具有趣味性和可操作性,能够正常运行。其中用到C语言中的各种语句、结构。(如其中需要注意全局变量和局部变量的申明,数组的使用等)(3)五子棋游戏要求能够进入欢迎界面,当有五颗相同颜色的棋子连续连成五颗,就胜出。 任务: 五子棋是一种传统的棋盘游戏,是我国古代传统的黑白棋种之一发展于日本,流行于欧洲任务内容就是设计一款老少皆宜、能够锻炼个人策略谋划能力棋。有助于孩子开发智力,或者闲暇时打发时间。原则: (1)系统性。系统作为统一整体而存在,因此,在设计中,要从系统的角度考虑。系统的代码要统一,传递语言要尽可能一致。 (2)可靠性。可靠性是指系统抵御外界干扰的能力及外界干扰时的恢复能力。

(3)规范性。游戏的运用以吸引玩家的乐趣为前提,一方面,系统设计应尽量避免不必要的复杂化,另一方面模块应尽量简洁,以缩短处理流程。 2 开发工具 C语言 3 应用平台 Windows xp 4 功能设计 游戏分析: 五子棋是两人之间的竞技游戏,该五子棋程序基本上实现了五子棋游戏的功能,有双方下棋之前的欢迎界面及下棋过程中的棋盘界面,还有最终会判断出输赢。同时,该游戏采用了二维坐标实现的,明了易懂,方便玩家在游戏过程中的基本操作,使游戏更加简便。细节方面,该程序有实时储存功能,随时记录。另外考虑到游戏挺简单的,就没有设置悔棋的相关模块。 游戏介绍: 该游戏是简单的双人五子棋,所实现的功能是能够显示欢迎界面,选择是否进行游戏,进入游戏界面以后,玩家开始下棋。玩家输入坐标则会在棋盘上显示棋子,(若是输入的坐标超出棋盘或者该位子已经有子则会提示玩家重新输入坐标位子),若输入则退出游戏。 4.1 算法设计 程序说明: 五子棋是一款经典的益智类游戏,通常是黑棋先行;五子棋专用盘为15*15方格,五个子的连接方向为横、竖、斜,当任一方的五个子在各方向上连成一线时,则该方获胜。 程序要求: 按照程序说明编写五子棋程序,要求可以进行双人之间的游戏。程序输出: 输出棋盘、棋子,并能够进行相应的操作。

五子棋C语言代码

#include "graphics.h" /*图形系统头文件*/ #define LEFT 0x4b00 /*光标左键值*/ #define RIGHT 0x4d00 /*光标右键值*/ #define DOWN 0x5000 /*光标下键值*/ #define UP 0x4800 /*光标上键值*/ #define ESC 0x011b /* ESC键值*/ #define ENTER 0x1c0d /* 回车键值*/ int a[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/ char playone[3],playtwo[3];/*两个人的得分转换成字符串输出*/ void playtoplay(void);/*人人对战函数*/ void DrawQp(void);/*画棋盘函数*/ void SetPlayColor(int x);/*设置棋子第一次的颜色*/ void MoveColor(int x,int y);/*恢复原来棋盘状态*/ int QpChange(int x,int y,int z);/*判断棋盘的变化*/ void DoScore(void);/*处理分数*/ void PrintScore(int n);/*输出成绩*/ void playWin(void);/*输出胜利者信息*/ /******主函数*********/ void main(void) { int gd=DETECT,gr; initgraph(&gd,&gr,"c:\\tc"); /*初始化图形系统*/ DrawQp();/*画棋盘*/ playtoplay();/*人人对战*/ getch(); closegraph();/*关闭图形系统*/ } void DrawQp()/*画棋盘*/ { int i,j; score1=score2=0;/*棋手一开始得分都为0*/ setbkcolor(BLUE); for(i=100;i<=420;i+=40) { line(100,i,420,i);/*画水平线*/ line(i,100,i,420); /*画垂直线*/ } setcolor(0);/*取消圆周围的一圈东西*/ setfillstyle(SOLID_FILL,15);/*白色实体填充模式*/ fillellipse(500,200,15,15); /*在显示得分的位置画棋*/ setfillstyle(SOLID_FILL,8); /*黑色实体填充模式*/ fillellipse(500,300,15,15); a[3][3]=a[4][4]=1;/*初始两个黑棋*/ a[3][4]=a[4][3]=2;/*初始两个白棋*/

五子棋优秀教案1-5[1]

五子棋兴趣小组活动教案 第一课时认识五子棋(一) 学习目标: 1、认识五子棋棋盘,知道棋盘是有横竖各15条平行线交叉组成及棋盘上的4星1天元; 2、认识五子棋棋子,知道五子棋棋子是黑白225枚子,黑113枚子,白112枚子。 学会五子棋执棋方式。 3.了解五子棋的历史及比赛的计时制。 重点、难点: 认识五子棋棋盘,知道棋盘是有横竖各15条平行线交叉组成及棋盘上的4星1天元;认识五子棋棋子,知道五子棋棋子是黑白225枚子,黑113枚子,白112枚子;学会五子棋执棋方式。 一、谈话导入。 1、同学们,课前老师让你们收集并了解有关五子棋的资料,那谁愿意把自己收集到的知识讲给大家听? 2、学生汇报所收集的资料。 3、通过资料的收集,我们了解了许多五子棋的知识。 二、新课 1、五子棋的历史 五子棋是我们中国发明的,距离现在已经有四千多年的历史了 2、认识五子棋棋盘。出示图1

第二课时认识五子棋(二) (1)生观察棋盘,发现问题,提出质疑。 (2)通过其他学生的已有知识解决问题,师补充小结:棋盘由纵横各15条等距离、垂直交叉的平行线构成,形成225个交叉点。以对局开始时的黑方为准,棋盘上的纵行线从下向上用阿拉伯数字1—15 标记(注:QQ棋盘上的数字则从上向下标记),横行线从左到右用英文字母A--O标记,其中H8点为天元;D4、D12、L12、L4四点为星。 3、认识棋子。 (1)师演示,生直观:棋子由黑白两种颜色组成。师补充:共有225个棋子,与交叉点的个数相同;其中黑棋113个,白棋112个,不过平时下棋棋子少些也是可以的。 (2)正确的执棋方式。 师演示:是食指的指甲与中指的指肚儿夹住棋子。棋子落在 棋盘的交叉点上,落下后不能移动。 生执棋练习:先从自己的棋盒里拿棋,放到棋盘上的交叉点上。然后同桌之间比赛,看谁拿的快,放的准。 4.了解五子棋比赛计时制 (一)比赛时限 比赛时限可分每方30分钟到5小时不等,但一般要求一天内必须结束。有些比赛受条件限制,也可采用双方共用时限的方法,时限时间约是单方时限的双倍。双方共用时限到时后,可用限时走棋(几分钟之内走完若干手棋)或到时读秒的后续手段,直到该局结束。读秒时限,多采用1分钟制,凡一着棋用时不足1分钟,可不计时间,到1分钟则判负。 (二)迟到时限 比赛前,组织者都会规定迟到时限,一般为15分钟,每场比赛迟到时限一到,未到场的棋手均按弃权判负。

C++课程设计——五子棋

《面向对象程序设计课程设计》 ————五子棋 学号:201201051738 学院:信息科学与工程学院 班级:网络工程2班 指导老师: 学生姓名: 日期:2013 年06 月24 日

C++课程设计——五子棋 一、功能描述 设计一个五子棋游戏,实现双人对战,通过鼠标进行操作,具有悔棋功能,可以多次进行游戏,界面美观,有音效。重要的是按键进行弹窗提醒,由用户进行确认。 二、概要设计 窗口注册:向系统注册窗口。 建立窗口:初始化并建立窗口。 处理消息:等待消息传入,调用处理函数。 POINT_类:记录一个点及其处理函数,包括点的位置规范化函数。 Chess类:记录棋子相关信息及其处理函数,包括落子,起子函数。 GameGolbal类:记录一个五子棋游戏的整体信息及其处理函数,包括定义了POINT_类,Chess类的成员,及一些游戏中 会用到的整体变量。主要函数包括如下: 窗口刷新函数:通过储存的数据重新绘制窗口。 新游戏函数:对游戏的变量进行初始化的处理。 悔棋函数:对储存数据修改,达到悔棋的目的,会调用 窗口刷新函数。 声音播放函数:播放效果声音。

结果判断函数:每次落子后判断结果。 结果显示函数:绘制游戏胜利的结果。 程序运行流程及函数调用关系如下: 建立窗口 绘制棋子 注册窗口 悔棋 ID_BACK 标准化并记录坐标 窗口刷新 判断并累加操作的棋子 判断是否棋子覆盖 修改数据 调用声音函数 关于 IDM_ABOUT 退出 IDM_EXIT 鼠标左单击 WM_LBUTTO DOWN 新的一局 ID_NEW 数据初始化 窗口菜单命令 WM_COMMAND 判断胜负 判断胜负 显示结果 等待信息

五子棋课程设计实验报告

西南交通大学 程序语言综合课程设计 五子棋游戏 课程《程序语言综合课程设计》 学院信息科学与技术学 专业软件工程 姓名 学号 20119050 日期 2016年月日

目录 第一章课程设计的目的和要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计的要求 (3) 1.3 课程设计的实验环境 (3) 第二章功能描述 (4) 第三章总体设计 (5) 3.1 功能模块设计 (5) 3.1.1 任务执行流程图 (5) 3.1.2 下棋函数流程图 (6) 3.2 数据结构设计 (7) 3.2.1 定义结构体 (7) 3.2.2 定义数组 (7) 3.2.3 全局变量 (7) 3.3 函数功能描述 (7) 第四章程序实现 (8) 4.1源码分析 (8) 4.2运行结果及界面介绍 (22) 第五章后记 (27)

第一章课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。 1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能 1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0

C语言程序设计之五子棋

安徽大学 电子信息工程学院 C语言程序设计 指导老师:梁栋 小组成员:高丽蓉高雪朱楠丁昊刘佳慧阮超

C语言程序设计之五子棋 摘要:本程序是一种两人对弈的纯策略型棋类游戏,规则简单,变化多端,非常富有趣味性和消遣性。主要应用了Visual C++编程来完成这个游戏的设计的。本文主要介绍了本游戏的开发环境Microsoft Visual C++6.0,使用当前优秀的开发工具VC++编程基于MFC的基本对话框,编写了一个五子棋的游戏软件。包含了五子棋程序的棋盘初始化、游戏规则、胜负判断方法。 关键词:五子棋游戏应用程序、初始化、规则、图形函数、判断 1.问题描述 在Visual C++ 6.0编译器的基础上,基于MFC的基本对话框,编写一个五子棋的游戏软件。 该游戏应该符合以下要求: 1.1游戏模式:人先下棋,电脑在人下子后会随后下棋。 1.2人机对弈:完成人和计算机的对弈,用黑色棋子表示人,白色棋子表示电脑,电脑要具有一定的人工智能,能够可以与人对弈一段时间。 1.3棋盘:要求棋盘绘制美观耐看。 1.4判断输赢:当一方有五个相邻的棋子连成一条线时,计算机能判定输赢,并能结束本次游戏并重新开始。

1.5存储功能:要求五子棋有存储功能,可以将进行中的游戏存储在棋盘上,也可以读取已存盘的游戏。 1.6弹窗功能:要求制作按钮,实现弹框功能,可以弹出指导老师与小组成员的信息。 2.详细设计 2.1总体设计 程序流程图如下图所示: 2.1.1 新建工程,选MFC AppWizard(exe),添上工程名,确定。 2.1.2选基本对话框,完成,确定

2.1.3插入位图 我们选择的方式从网上搜寻一些图片,然后直接贴图。先插入位图(BMP格式)。

c 课程设计报告五子棋

c 课程设计报告五子棋 C++面向对象课程设计报告 院(系): 专业: 学生姓名: ,, 班级:,,,学号: 题目: 五子连珠棋 ,,,,,,,,, 起迄日期: 2010-12-20,,,, ,,,,, 设计地点: 指导教师: 完成日期: 2010 年 12 月31 日 课程设计报告内容 一、需求分析 1( 选做此课题目的 五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。而且我对五子棋有着独特的爱好,希望自己也可以编写出一款可以实现人机对战的五子棋游戏。把自己的思想付给电脑,让自己有些成就感,给自己继续努力的动力。借此次课程设计的机会,把想法变成现实。而且五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。所以此次c++课程设计选择五子棋这个题目。 2( 程序所实现的功能

通过给电脑赋予人工智能,利用电脑运算速度快的特点,结合五子棋的游戏规则,给电脑设定固定的扫描方式,设定权值,使电脑能够选择最合适的落子点,然后调用加载已做好的棋盘棋子图像,最终实现简单的人机对弈。 3(该游戏为普通玩家使用,只要连成五子即获胜,没有禁手、RIF(国际连珠连盟)正式规则、“Yamaguchi”、”Tarannikov”、“Taraguchi”等规则。 二、设计内容 1( 根据所选题目,给出模块图 主界面 开始游戏重新开始游戏游戏结束 初始化棋盘初始化棋盘 结束界面 落子 判断输赢 2( 画出主程序及其主要模块的流程图 游戏开始 初始化棋盘 加载棋盘图片 1 点鼠标左键落子 加载棋子图片到棋盘 扫描棋盘,根据预设权 值,选择最佳地点落子否五子连 珠, 加载棋子图片到棋盘

五子棋c语言版

#include #include #include #include #define M 19 struct dengji { int computer[M][M][4]; int player[M][M][4]; }jilu; void banmian(char *h,char *l) { int i; printf("\t\t\t 趣味游戏五子棋\n\n"); printf("\t"); for(i=0;i

int x,y; char chx,chy,chz; chx='z'; while(chx<'a'||chx>'s'||chy<'a'||chy>'s') { cprintf("\t现在该黑方(X)下,请输入横纵坐标:"); chx=getchar(); chy=getchar(); chz=getchar(); if(chx<'a'||chx>'s'||chy<'a'||chy>'s') { printf("\t\t错误:超出坐标范围!\n"); } else { x=chx-'a'; y=chy-'a'; if(*(a+y*M+x)=='0') *(a+y*M+x)='X'; else { printf("\t\t错误:此处已经有棋子!\n"); chx='z'; } } } } void luozi(char *a) { int i,j,k,t1=0,t2=0,x1=0,y1=0,x2=0,y2=0; for(i=0;i

c语言五子棋的设计与实现课程设计

c语言五子棋的设计与实现课程设计

学生课程设计报告五子棋的设计与实现

一、课程设计内容 该程序是经过C++编写,具备存储,调用,修改和查询学生基本信息的管理系统,该程序并嵌入了五子棋游戏作为附加应用。嵌入的五子棋程序具备自动输出表格功能,并经过双人对弈实现该游戏的操作,而且该程序中的函数具备判断胜负方的功能 二、技术路线 以C、c++语言为编程语言,组合不同功能的函数进行功能的叠加 三、设计与实现 1.五子棋的设计与实现: (1)首先画棋盘,用一个19*19的二维数组来画棋盘。 (2)设计一个转义函数:把二维数组的内容转义成符号。 (3)设计一个判断函数,分别对白黑子从横、竖、左斜、右斜四个方向判断是否连成五子,每个方向分成两部 分,每个部分用一个循环来完成是否连成五子的判断。 只要连成了五子,返回一个值来记录。例如其中的一个 判断竖直方向的代码(其它的类似):for(int i=0;i<5;i++)//竖直是否连成五子的判断 {if(h-i-1>-1 && stone[h-i-1][l]=='o') js+=1; else break;}

for(int j=0;j<5;j++) {if(h+j+1<20 && stone[h+j+1][l]=='o') js+=1; else break;} if(js>=5){system("cls");return 0;} (4)接下来是主函数:主函数里面需要对输入的键盘操作进行判断,上下左右分别对应不同的操作,分别把光标 上下左右移动,空格键表示下子,对应的sign、lasth、 lastl变化(因为sign提示该谁下子了,lasth、lastl记录下子 的位置)h表示悔棋,只需将lasth、lastl的位置数组元素 清零。根据判断函数返回值告诉玩家谁赢了,,下棋总 次数为奇数则黑棋走,偶数白棋走。 2.学生信息管理系统的设计与实现 该程序经过分模块进行组合编写,信息管理系统模块经过C语言构造了学生信息的结构体,而且创立了查看函数、保存函数、打开函数、颜色函数等功能函数分别完成信息管理系统的存储信息、查找信息、修改信息等功能。颜色函数的调用实现了界面的美观性,主函数中的switch语句的使用实现了信息管理系统的选择功能,并能够经过界面选项为入口选择进行信息系统管理和游戏。 { case 1:type();break; /*调用键入学生信息函数*/

五子棋人人对战c五子棋课程设计报告

VC课程设计报告 设计题目:五子棋人人对战 学院:理学院 专业班级:信息与计算科学班 学生:***** 学生学号:12345 指导教师:### 提交时间:2013年 07 月 02 日成绩:

目录 第1章引言 (4) 第2章任务概述 (4) 2.1问题概述 (4) 2.1.1问题重述 (4) 2.1.2设计目的 (4) 2.2需求分析 (4) 2.2.1基本要求 (4) 2.2.2游戏功能介绍 (4) 第3章概要设计 (4) 3.1功能设计 (4) 3.2程序结构 (4) 3.3基本流程 (4) 第4章程序实现 (4) 4.1主要变量及函数的说明 (4) 4.1.1主要变量 (4) 4.1.2主要函数 (4) 4.2主要功能的实现 (4) 4.2.1类声明 (4) 4.2.2棋盘初始化 (4) 4.2.3开始下棋 (4) 4.2.4判断下棋合法 (4) 4.2.4判断输赢 (4) 第5章结果与总结 (4) 5.1 运行结果截图 (4) 5.2总结 (4) 参考文献: (4)

第1章引言 通过一学期的课程学习,对和Visual2010 C++编程环境有了一定程度的了解。根据课程要求,利用两周时间对所学知识加以巩固学习,用c++编译小游戏,初步了解程序设计与软件实现的思想。 该设计通过对“五子棋人人对战”游戏的编写对所学知识复习巩固。程序设计过程中,先对问题进行了全面分析,将“五子棋人人对战”划分成几个子问题后,逐步细化,最终归结成一个个函数的实现。 第2章任务概述 2.1问题概述 2.1.1问题重述 设计一个五子棋,能实现人人对战。(棋盘大小为13X13) 2.1.2设计目的 独立地利用所学的C++程序设计和Visaul C++6.0编程环境编写程序。 2.2需求分析 2.2.1基本要求 明确五子棋游戏的游戏规则,编写程序实现其功能。 2.2.2游戏功能介绍 为了更好地实现游戏,首先必须明确“五子棋”的游戏规则。大体的规则可描述如下:(1)进入主界面后,选择开始游戏。 (2)开始游戏后,一方开始下棋。 (3)再由另一方下棋 (4)判断输赢。 (5)玩家选择结束游戏时,结束游戏。

五子棋设计报告

C语言程序设计 题目五子棋(双人对战)指导教师 学生姓名 学号 专业电子信息工程 教学单位物理系(盖章)

目录 1课程设计的目的及要求 (1) 1.1课程设计目的与基本要求 (1) 1.2系统运行环境及功能简介 (1) 2程序流程图 (1) 3运行的运行及说明 (2) 3.1系统的运行 (2) 3.2程序的实现 (3) 3.3程序运行 (3) 3. 系统的调试 (3) 4课程设计目的 (3) 5 程序特色 (3) 6程序存在的缺陷 (4) 7总结 (4) 附件:源程序清单 (4)

1设计要求与设计内容 1.1 课程设计目的与基本要求 ●掌握用C语言解决问题的基本方法和步骤,能够熟练地使用C语言编写 中小型应用程序。 ●熟练掌握C语言编写规则,掌握函数的应用方法和编写。 ●熟练掌握面向过程程序设计方法。 ●掌握结构化程序设计思想和方法;培养和提高学生的程序调试能力。 ●《高级语言程序设计与课程设计》是《高级语言程序设计》课程的实践环 节,其教学目的是通过一些中小规模的编程,使学生对C语言程序设计的基本规则与方法有比较全面的理解和认识,熟练掌握高级语言程序设计技术,为以后学习更高层次的程序设计和软件开发奠定坚实基础。 1.2系统运行环境及功能简介 Vc++6.0下运行,硬件基本无要求,现在的计算机系统基本都以运行该系统。 该系统是五子棋的人人对战模式,而非平常的人机对战,系统有简单的菜单界面。本程序简洁明快,采用黑白两色棋。开始显示20*20的棋盘,白棋棋先手,要能动态显示下棋顺序,而且能自动判断输赢及显示胜负信息。 2程序流程图(系统的流程图如图2-1所示)

C语言知识学习图形五子棋教学规划报告

北京师范大学C语言课程设计报告 课题名称:游戏五子棋 指导教师:尹乾 课题组员:罗福莉赵帅帅何虹达院系:信息科学与技术 时间:2014.3.15-2014.4.20

摘要 五子棋是一种两人对弈的纯策略型棋类游戏,应用C语言编写程序可以在计算机上实现二人对弈五子棋功能。二人对弈五子棋程序由欢迎界面显示、游戏界面生成、光标移动与落子、判断胜负、悔棋功能、提供音效等子程序构成;程序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和语句。程序通过棋盘和棋子图像生成、二人移子与落子和判断胜负等功能的实现,在计算机上实现了二人五子棋对弈。

目录 摘要 ------------------------------------------------------------ 2 第1章:需求分析 ----------------------------------------------- 4 1.1五子棋背景 ----------------------------------------------- 4 1.2 五子棋需求分析和流程设计------------------------------- 4 第2章:概要设计 ----------------------------------------------- 9 2.1 各类头文件和全局变量 ----------------------------------- 9 2.2 画面显示模块 ------------------------------------------ 10 第3章:详细设计 --------------------------------------------- 12 3.1 玩家操作模块 ------------------------------------------ 12 3.2音效提供模块------------------------------------------- 13 3.3 胜负判断模块 ------------------------------------------ 13 第4章:调试分析 --------------------------------------------- 14 4.1 图形模块----------------------------------------------- 14 4.2 玩家操作模块 ------------------------------------------ 15 4.3 胜负判断模块 ------------------------------------------ 15 第5章:用户手册 --------------------------------------------- 16 第6章:小组分工 --------------------------------------------- 17 第7章:结论与心得 ------------------------------------------- 17 第8章:源程序代码------------------------------------------ 18 附录一Color命令的使用说明------------------------------ 43

(完整word版)数据结构课程设计-五子棋

姓名:刘旭 学院:计算机与通信学院班级:通信工程101班指导老师:文志诚

目录 一、需求分析 (3) 1.1 开发背景 (3) 2.2 功能简介 (3) 二、系统设计 (4) 2.1 函数一览 (4) 2.2 “封面”的设计 (4) 2.3 二维数组与控制台 (5) 2.4 键盘操作 (6) 2.5判定 (7) 2.6 悔棋的实现 (8) 三、调试运行 (9) 3.1 进入界面 (9) 3.2 棋盘的初始状态 (10) 3.3 激战中 (10) 3.4 游戏结束 (11) 四、解决问题的关键 (11) 五、课设总结 (11) 六、附录 (12) 6.1 画图代码.................................................................................................. 错误!未定义书签。 6.2 初始化...................................................................................................... 错误!未定义书签。 6.3 Play函数 .................................................................................................. 错误!未定义书签。

一、需求分析 1.1开发背景 学习了数据结构该门课程,对于枯燥无味的理论知识,我们是否能够通过所学的知识在课程设计中做出有趣味东西,然后让我们对于数据结构更加的感兴趣呢?于是我和我的室友陈明建开始酝酿着写些什么东西。上个学期就已经写了通讯录那之类的链式结构,这次我们决心有所改变,我们学习了栈、队列、树、图,字典树有人选了,我们就来写一个基于图的小程序,五子棋,对,图的简单应用,于是我们开始着手来写这个小小的程序,祝我们好运! 2.2 功能简介 既然是五子棋,我们要做的是时时刻刻的将整个图(以下称为棋局)的状态呈现出来,那么界面就是必不可少的。MFC不会?没关系,我们就用基于控制台的字符输出来构建这个棋局吧,当然这只是第一步,详细如下: ○1拥有一个良好的进入界面,以及必要的选项; ○2拥有一个二维的数组来记录和更新实时的状态,并且能够有一种方法在DOS界面下绘制出整个棋局的实时状态(包括棋盘和棋子); ○3能够通过键盘上的按键完成所选位置的移动和选定操作; ○4能够在每一次的走棋后判定是否游戏结束(棋盘走满或者是一方胜出); ○5能够完成悔棋的功能,并保证这之间的棋局绘图能够与二维数组数据同步,做到真正意义上的悔棋。

相关文档
最新文档