文档库 最新最全的文档下载
当前位置:文档库 › 猴子选大王C语言课程设计

猴子选大王C语言课程设计

猴子选大王C语言课程设计
猴子选大王C语言课程设计

数据结构课程设计报告题目:猴子选大王

院(系):计算机工程学院

专业:计算机科学与技术

班级:嵌入式109(1)

学生:

指导教师:寇海洲孙成富

邱军林殷路

2010年12月

目录

一、设计目的 (1)

二、设计内容 (1)

三、程序设计步骤 (1)

四、调试分析 (5)

五、测试结果 (5)

六、课程设计小结: (6)

一、设计目的

1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。

2、提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。

4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。

二、设计内容

1、系统名称:猴子选大王

按照规定的要求,选出最后的一只猴子,为大王。

2、要求:

一堆有编号的猴子,编号为1,2,3……m,这群猴子(m个)按照1-m的顺序围坐一圈,从第一开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中剩下最后一只猴子,则该猴子为大王。

三、程序设计步骤

1)功能分析说明图:

2)采用主要的数据结构类型。

采用了链表的存储方式,属于链接存储结构。

for(i=1;i

{

p=(LINK)malloc(sizeof(Monkey));

p2->next=p;

p2=p;

}

以下是用于存储结点的结构体的定义:

typedef struct monkey

{

int num;

struct monkey *next;

} Monkey,*LINK;

基本算法:

这个算法的主要流程为:

从控制台读取猴子的数量和报数的最大数——>对猴子进行编号,并用链表来存储——>让链表中的猴子进行报数,对于报数为m的猴子则从链表中删除——>当链表中只剩下一个报数后则停止这个过程,这最后一个猴子即选出来的大王。

以下为为猴子建立链表:

for(i=1;i

{

p=(LINK)malloc(sizeof(Monkey));

p2->next=p;

p2=p;

}

以下为猴子进行编号:

for(i=1;i<=n;i++) //对猴子进行编号

{

p->num=i;

//printf("%d号猴子:%d\n",p->num,p->num);

p=p->next;

}

以下为最主要的算法过程,是通过一个While循环来控制的,是让猴子报数的过程,并删除报数为m的猴子:

while(1)

{

i++;

//当链表只剩最后一个元素了则跳出循环,此时报数已完成

printf("%d号猴子报:%d\n",p->num,i);if(p->next==p) break;

if(i==m)

{

i=0;

printf("%d号猴被淘汰\n",p->num);

printf("\n");

p2->next=p->next;

p=p2->next;

continue;

}

else

{

if(i==m-1) p2=p;

p=p->next;

}

}

3)详细设计:

#include

#include

int n=2;

int m=1;

typedef struct monkey

{

int num;

struct monkey *next;

} Monkey,*LINK;

void main()

{

printf("请输入一个整数(猴子数量):");

scanf("%d",&n);

printf("请输入一个小于猴子数量的整数(报数的最大数):");

scanf("%d",&m);

LINK p,head,p2;

int i;

head=p=p2=(LINK)malloc(sizeof(Monkey));

for(i=1;i

{

p=(LINK)malloc(sizeof(Monkey));

p2->next=p;

p2=p;

}

p2->next=head;

p=head;

//printf("对猴子进行编号!\n");

for(i=1;i<=n;i++) //对猴子进行编号

{

p->num=i;

//printf("%d号猴子:%d\n",p->num,p->num);

p=p->next;

}

i=0;

p=head;

while(1)

{

i++;

//当链表只剩最后一个元素了则跳出循环,此时报数已完成

printf("%d号猴子报:%d\n",p->num,i);if(p->next==p) break;

if(i==m)

{

i=0;

printf("%d号猴被淘汰\n",p->num);

printf("\n");

p2->next=p->next;

p=p2->next;

continue;

}

else

{

if(i==m-1) p2=p;

p=p->next;

}

}

printf("胜出:%d",p->num);

}

四、调试分析

调试的过程中,对程序做了几点改进,增加了程序的容错能力,不论用户输入什么内容,程序都能安全检查。

这个算法主要考察了对数据存储方式的处理和循环判断的处理。我在这里用了链表的存储方式。

五、测试结果

调试得到输出结果如图:

当输入n为6,m为4时的运行结果:

六、课程设计小结:

猴子选大王是一个数据结构很古老很经典的问题,融知识性和娱乐性为一体,能让人产生较大兴趣,因此编写程序实现之是一件很有意义的事。为编写这个程序的代码及写课程设计报告,我们花了两周的时间,下面说说我们在这期间的感悟。

在课程设计中,首先要看清问题,将问题要求理解透彻,在构思要如何实现,要用到哪些函数,要用什么算法,在课程构思中选算法是一个很重要的概念,只有确定用这么算法后才能接下来的工作,将流程图画在纸上,再依次编写代码,在程序设计中,编写代码只是一个方面,调试才是关键。它是一个相当繁琐的过程,有许多新的问题需要被解决,但同时它也是一个比较重要的过程,因为在程序调试过程中,你会学到很多新的东西,从而增加你编程的经验。

通过本次实习,温固了数据结构的相关知识,加深对课内所学的有关数据的逻辑结构和存储表示、数据结构的选择和应用、算法的设计和时空效率分析等课程基本内容的理解,进一步熟悉了VC++编程环境,巩固并提高了分析问题、解决实际问题的能力。

做任何一件事情都需要一个过程,在这个过程中,面对许多问题,我们尽最大的努力寻找解决方法,现学现用新的知识,不断积累经验,为未来的发展打下基础。我们是在学习,但是我们真正要学的是学习的能力,我们享受这个过程,因为它引领我们进步!

五子棋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编写程序猴子选大王

湖南人文科技学院计算机系 课程设计说明书 课程名称: 数据结构 课程代码: 题目: 猴子选大王 年级/专业/班: 06级计算机科学与技术专业一班 学生姓名: 学号:06408109 06408102 06408107 06408122

06408103 指导教师: 刘刚常 开题时间: 2008 年 6 月16 日 完成时间: 2008 年 6 月29 日

目录 摘要 (3) 一、引言 (4) 二、设计目的与任务 (4) 三、设计方案 (5) 1、总体设计 (5) 2、详细设计 (8) 3、程序清单 (14) 4、程序调试与体会 (22) 5、运行结果 (23) 四、结论 (24) 五、致谢 (24) 六、参考文献 (25)

摘要 本文首先介绍顺序表和链表并作以比较,我们分别使用循环队列和循环链表来解决猴子选大王的问题,程序使用了C语言编写,有很少一部分函数是用C++编写的,有比较详细的中文注释并在VC++下调试运行通过。整个程序使用中文界面,并有相应的提示信息,便于操作和程序运行。 关键词:循环队列;循环链表;存储结构 Abstract This paper details the difference of sequence list and linklist.We respectively use queue and circular queue and circular linked list to solve the seek elected king of the monkey problem . The procedure write with C language ,a very small part function is used by the C + +,and has chinese explanatory note.What’s more,it was debugged in VC++ debugger and run very well.The whole procedure,with Chinese interface and thecorresponding hints,is convenient to run and easy to be operated. Keywords : circular queue;circular linked list ;storage structure

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

猴子选大王课程设计报告

课程设计报告 课程设计题目:猴子选大王 学生姓名:吴兆 专业:软件工程 班级:1321813 学号:201320181306 指导教师:吴建东 2015年1 月9 日 东华理工大学

目录一:需求分析 1.问题描述 2.基本要求 3.需求分析 二:概念设计 三:详细设计 四:调试分析和测试结果五:总结 六:源代码

一:需求分析 1.问题描述 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m 的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 2.基本要求 输入数据:输入m,n m,n 为整数,n

程序流程图如下: 否 是 三:详细设计 1.程序中使用的存储结构struct L { int num; struct L *next; }; int n; int i=0; 2.程序中使用的循环结构开始 进行1-m的报数 删除第n只猴子 剩下的猴子 数是否为1 输出猴子大王的序号 结束

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语言设计-五子棋游戏 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方格,五个子的连接方向为横、竖、斜,当任一方的五个子在各方向上连成一线时,则该方获胜。 程序要求: 按照程序说明编写五子棋程序,要求可以进行双人之间的游戏。程序输出: 输出棋盘、棋子,并能够进行相应的操作。

猴子选大王

一、猴子选大王课题描述 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1 到m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 猴子选大王系统设计 1、猴子选大王总体设计结构图 2、系统数据的数据结构设计 猴子的存放采用链式存储结构,利用循环链表来实现建立的,其表示方法是递归定义的. (1)、变量说明 程序中使用的存储结构:ListNode结构体 Struct ListNode{ Int data; //数据域 Struct ListNode *nextPtr; //指向后继结点的指针域 }; Int monkeys,count //分别为猴子的个数和猴子的报数 HeadPtr,tailPtr,currentPtr //分别为链表的头结点,尾结点和结点 HeadPtr1,headPtr2 //分别为选大王的单循环链表和由淘汰的猴子所构成的链表 (2)、函数说明

DestroyList (LISTNODEPTR headPtr) //用destroylist函数来释放选大王链表的各个结点 CreateList (int n) //创建循环链表,容纳n个猴子 Printf(“input the amount of monkeys:”) //用printf函数来提示输入的内容 Scanf(“%d”,&monkeys) //用scanf函数来输入猴子的个数 Printf(“input the count number:”) //用printf函数来提示报数的数 Scanf(“%d”,&count) //用scanf函数来输入每次数到的猴子就出局(3)、while循环说明 while(currentPtr1!=currentPtr1->nextPtr){ /*往后数一个猴子*/ prePtr1=currentPtr1; currentPtr1=currentPtr1->nextPtr; count++; /*若数到n,则淘汰currentPtr指向的猴子*/ if(count%n==0){ /*从headPtr1指向链表中拆下currentPtr指向的结点*/ prePtr1->nextPtr=currentPtr1->nextPtr; currentPtr1->nextPtr=NULL; /*将currentPtr1指向的结点插入到headPtr2指向链表中*/ if(headPtr2==NULL){/*若headPtr2指向的为空链表*/ headPtr2=currentPtr1; tailPtr2=currentPtr1; } else{ /*将拆下来的结点组装到headPtr2指向的链表上*/ tailPtr2->nextPtr=currentPtr1; tailPtr2=tailPtr2->nextPtr; } currentPtr1=prePtr1; /*currentPtr1指向上一个结点,为下一次数数做准备*/

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

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

五子棋人人对战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语言)中的循环单链表为主要的设计支柱,利用了C语言简洁紧凑、灵活方便,语法限制不太严格,程序设计自由度大,生成目标代码质量高,程序执行效率高等方面的优点。循环单链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针域不再是结束标记,而是指向整个链表的第一个结点,从而使链表形成一个环,基于这样的特点,它适合处理具有环形结构的数据元素序列。 在程序代码的编写中,运用了结构体类型(struct Node),动态申请内存空间函数malloc(),释放动态申请内存空间函数free()等类型,同时也具有多种循环、条件语句控制程序流向,如:嵌套if else语句,多重for循环语句,还有链表中结点指针(p->next),从而使程序完全结构化。 这样编写出的完整程序代码可以实现“猴子选大王”功能,输入猴子的数目m,循环数n,对m个猴子进行编号,通过嵌套if else语句,for语句,一遍一遍的循环,判断,删除,直到只剩下最后一个猴子,即大王。这样就可以实现所需的基本功能了。关键词:数据结构;循环;单链表

Abstract The main purpose of the program design process to solve the form of "Joseph Ring" in the election --- monkey king. So complex it became clear the election. All procedures for data structures (C language) in single-cycle design of the main pillars of the list, using the C language simple and compact, flexible and convenient, the syntax is not strictly limited, program design flexibility to produce high quality object code, program execution the advantages of higher efficiency. Single-loop single-linked list is another form of list, its structural features is the last node list pointer field is no longer the end of the tag, but point to the list the first node, so that form a ring list, based on Such features, it has a ring structure for the data processing sequence of elements. The preparation of the program code, the use of a structure type (struct Node), dynamic application memory function malloc (), the release of dynamic memory functions for free () and other types, but also with a variety of loop, conditional statements control program flow such as: nested if else statements, multiple for loop, there is a linked list node pointer (p-> next), to make the program fully structured. Write such a code can achieve a complete "Monkey King selected" feature, enter the number of monkeys m, cycles n, for number of monkeys on the m-by nested if else statements, for statements, loop over and over again, judge, removed until there are only a monkey, or king. This can achieve the required basic function. Keywords: data structures; circulation; single linked list

五子棋设计报告

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所示)

(完整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能够完成悔棋的功能,并保证这之间的棋局绘图能够与二维数组数据同步,做到真正意义上的悔棋。

c课程设计报告五子棋

C++面向对象课程设计报告 院(系): 专业: 学生姓名:__ 班级:___学号: 题目:五子连珠棋_________ 起迄日期:2010-12-20_________设计地点: 指导教师: 完成日期: 2010 年 12 月31 日

课程设计报告内容 一、需求分析 1.选做此课题目的 五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。而且我对五子棋有着独特的爱好,希望自己也可以编写出一款可以实现人机对战的五子棋游戏。把自己的思想付给电脑,让自己有些成就感,给自己继续努力的动力。借此次课程设计的机会,把想法变成现实。而且五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。所以此次c++课程设计选择五子棋这个题目。 2.程序所实现的功能 通过给电脑赋予人工智能,利用电脑运算速度快的特点,结合五子棋的游戏规则,给电脑设定固定的扫描方式,设定权值,使电脑能够选择最合适的落子点,然后调用加载已做好的棋盘棋子图像,最终实现简单的人机对弈。 3.该游戏为普通玩家使用,只要连成五子即获胜,没有禁手、RIF(国际连珠连盟)正式规则、“Yamaguchi”、”Tarannikov”、“Taraguchi”等规则。 二、设计内容 1.根据所选题目,给出模块图 2.画出主程序及其主要模块的流程图

猴子选大王课程设计说明书

数学与计算机学院 课程设计说明书课程名称: 数据结构课程设计 课程代码: 6014389 题目: 猴子选大王 年级/专业/班: 2010级软件工程2班 学生姓名: 蒋童 学号: 开始时间: 2011 年11 月9 日 完成时间: 2011 年12 月30 日 课程设计成绩: 指导教师签名:年月日数据结构课程设计任务书

学院名称:数学与计算机学院课程代码:__ 6014389______ 专业:软件工程年级:2班 一、设计题目 猴子选大王 二、主要内容 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 三、具体要求及应提交的材料 要求:使用数组和循环链表等两种以上的存储方式来做 输入数据:输入m,n m,n 为整数,n

六、推荐参考资料 [1] 严蔚敏,吴伟民.数据结构.清华大学出版社出版。 [2] 严蔚敏,吴伟民. 数据结构题集(C语言版) .清华大学出版社.2003年 5月。 [3] 唐策善,李龙澎.数据结构(作C语言描述) .高等教育出版社.2001年 9月 [4] 朱战立.数据结构(C++语言描述)(第二版本).高等出版社出版.2004 年4月 [5] 胡学钢.数据结构(C语言版) .高等教育出版社.2004年8月 [6] 徐孝凯等著.数据结构(C语言描述).清华大学出版社.2004 指导教师签名日期年月日 系主任审核日期年月日 目录 摘要................................. 错误!未定义书签。引言.................................. 错误!未定义书签。 1 需求分析.............................. 错误!未定义书签。 1.1任务与分析..................................... 错误!未定义书签。 1.2测试数据....................................... 错误!未定义书签。 2 概要设计.............................. 错误!未定义书签。 2.1 ADT描述....................................... 错误!未定义书签。 2.2程序模块结构................................... 错误!未定义书签。 2.21 结构体定义................................... 错误!未定义书签。 2.3 各功能模块.................................... 错误!未定义书签。 3 详细设计............................. 错误!未定义书签。

相关文档
相关文档 最新文档