五子棋(双人对战) C语言课程设计.doc

合集下载

五子棋(双人对战) C语言课程设计.doc

五子棋(双人对战) C语言课程设计.doc

C语言程序设计题目五子棋(双人对战)指导教师曹东燕学生姓名夏文龙于文杰邢健学号 201000802032 201000802114 201000802097专业电子信息工程教学单位物理系(盖章)目录1设计内容与设计要求 (1)1.1系统功能简介 (1)1.2系统运行环境 (1)2程序流程图 (1)3运行的运行及说明 (2)3.1系统的运行 (2)3.2运行说明 (4)4课程设计目的………………………………………………….5 程序特色 (5)6总结 (5)附件:源程序清单 (5)1设计内容与设计要求1.1系统功能简介该系统是五子棋的人人对战模式,而非平常的人机对战系统有简单的菜单界面1.2系统运行环境Vc++6.0下运行,硬件基本无要求,现在的计算机系统基本都可以运行该系统。

2程序流程图3系统的运行及说明3.1系统的运行图3-1程序的初始化界面程序初始化的界面,界面简洁明快,便于观察。

图3-2程序的运行界面图3-3程序的介绍界面3-2运行说明A向左 W向上 D向右 S向左空格键确定当结束时按Y重新开始游戏按N退出游戏4课程设计目的五子棋游戏不仅能增强人们的抽象思维能力、逻辑推理能力、空间想象力,提高人们的记忆力、心算能力等,而且深含哲理,有助于修身养性。

五子棋既有现代休闲方式所特有的特征“短、平、快” ,又有中国古典哲学所包含的高深学问“阴阳易理” ;它既有简单易学的特点,为人民群众所喜闻乐见,又有深奥的技巧;既能组织举办群众性的比赛、活动,又能组织举办高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观,它是中西方文化的交融点,也是中西方文化交流的一个平台。

自从计算机作为游戏对战平台以来,各种棋类游戏如雨后春笋般纷纷冒出。

五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。

同时具有简单易学、既动手又动脑的特点。

同时也为锻炼自己的编程能力。

5程序特色本程序简洁明快,采用黑白两色棋,并且本程序为双人对战。

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

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

VC课程设计报告设计题目:五子棋人人对战目录学院:第1章引言 (4)第2章任务专业班级:信息与计算科学班概述...........................2.1 问题概述:述……学生姓名:***** 2 :1:1问题重::::42 :1: 2 设计目地……学生学号:12345 ::::42.2 需求分析:指导教师:### 2 :2 :1 基本要求 (4)222游戏功台匕提交时间:冃匕2013年07月02日介绍第3章概要设计......3:1功能成绩:设计......3:2程序结构......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章引言通过一学期地课程学习,对<C++程序设计>和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)玩家选择结束游戏时,结束游戏.第3 章概要设计3.1 功能设计程序主要实现地功能如下所述:(1)启动程序,出现主界面.(2)显示棋盘.(3)选择开始游戏.(4)有一方开始下棋,并判断下棋是否合理.(5)判断输赢.(6)有另一方开始下棋,并判断下棋是否合理.(7)判断输赢.(8)选择是否继续.9)游戏结束后,退出游戏3.2程序结构 程序地结构如下图所示: 五子棋人人对战图3.2程序结构3.3基本流程判断输赢 结束游戏根据游戏规则及其结构图,画出如下程序基本流程图:NO玩家X 下棋是否赢棋图3.3基本流程第4章程序实现4.1主要变量及函数地说明 4.1.1主要变量//下棋地横坐标 int y 。

(完整word版)c++课程设计五子棋游戏

(完整word版)c++课程设计五子棋游戏

指导教师签字:年月日目录摘要 (II)Abstract ………………………………………………………………………………….。

II 1 绪论…………………….……………………………………。

. 11。

1 课题背景…………………………………………………………………………。

11.2 课程设计的目的 (1)2 设计方案简述………………………………………..………………….。

22.1 可行性分析………………………………………………..…………………………。

22.2 需求分析.........................................................。

.. (2)3 详细设计......................................................................。

.. (3)3.1窗体设计......................................................。

..................................。

3 3。

2游戏项目开发.. (5)3。

2。

1棋牌设置.....................................................................................。

(5)3.2.2放置棋子功能的开发 (6)3。

3.3游戏获胜决断的开发 (12)3.2.4游戏的调试与运行 (20)4 设计结果及分析......................................................。

.......。

(22)4.1 程序的结果...................................................................................。

五子棋游戏C语言

五子棋游戏C语言

五子棋游戏程序设计(C语言实现)一、设计任务与目标设计两个人对战的五子棋游戏,游戏开始界面是显示游戏的规则,然后让用户输入命令以确定游戏是否开始,如果用户确定开始,那么要显示棋盘,接下来到了最重要的几步,两个玩家交替落子,当连续五个棋子在一条直线上时,一方赢棋,游戏结束。

其中,有些问题就是平时基本的输入输出问题,例如:游戏规则,可以直接打印。

棋盘的显示也是一般的图形输出问题,但是稍微复杂一些。

需要改进的地方和达到的目标是:1、游戏的初始界面显示的是游戏规则,当玩家确定开始的时候要清除界面来显示棋盘。

2、棋盘和棋子的显示,界面(棋子和棋盘)容易分辨,这要从颜色和图形上加以区分。

3、要求一方用‘W’(上)、‘S’(下)、‘A’(左)、‘D’(右),另一方用‘↑’、‘↓’、‘←’、‘→’来移动光标,再分别用‘Z’和‘空格’键确定落子。

4、当一方走棋时,另一方的按键应该设置为无效。

5、游戏进行时打印提示信息,当一方赢棋后,要显示赢棋的字符,并询问玩家是否继续开始。

6、可以随时退出游戏或重新开始游戏。

二、方案设计与论证首先设置游戏的初始界面,采用白色背景和红色前景,这可以调用‘conio.h’库函数实现打印游戏规则。

询问玩家是不是开始游戏,通过选择Y\N来确定。

其中会遇到这样的问题:当玩家输入的不是‘Y(y)’或者‘N(n)’时应该怎么办呢?如果采用scanf函数来接收命令,这样会显示一个不满足要求的字符,于是可以用getch函数来接收命令,判断输入的字符是否为‘Y(y)’和‘N(n)’,如果是再显示出来。

为了界面的简洁,进入游戏前先清除屏幕,调用‘system()’函数来实现。

然后打印棋盘,可以把背景设置为湖蓝色,这样棋盘和棋子更容易分辨。

游戏开始后棋盘用黑色显示,这样易于区分。

具体的思路是:由于棋盘是网格状的,所以选择一个基本图形字符串‘十’,通过循环打印而构成一张大图。

接下来确定落子的位置,这需要通过改变光标的位置来实现,考虑到是在vc6.0环境下编译文件,c语言中的有些库函数并不支持,所以选择了’gotoxy()’函数并结合‘window.h’下的函数,通过键盘按键控制达到光标移动功能。

c语言五子棋课程设计报告

c语言五子棋课程设计报告

c语言五子棋课程设计报告一、前言五子棋作为一种智力游戏,在我国有着悠久的历史和广泛的群众基础。

本次设计的目的是使用C语言实现五子棋游戏,通过此次课程设计,学生将掌握C语言的编程思想和开发方法,同时了解五子棋游戏的规则和策略。

二、五子棋游戏规则五子棋游戏是在15*15的棋盘上进行,由黑白双方轮流落子,先将五个同色棋子连成一条线的一方获胜。

落子的位置必须为空,不能与已有的棋子重叠。

黑方先手,白方后手。

下图为五子棋棋盘示意图。

三、五子棋游戏实现本次课程设计采用C语言实现五子棋游戏,主要包括棋盘的绘制、落子的判断和胜负的判断等功能。

1.棋盘的绘制棋盘的绘制采用双重循环实现,将15*15的棋盘分成225个小格,其中包括14个横线和14个竖线,以及4个角上的点。

通过循环输出字符实现棋盘的绘制。

2.落子的判断落子的判断主要包括鼠标的点击和棋子的绘制两个部分。

当鼠标点击棋盘上的一个位置时,程序会根据当前轮到哪方落子来绘制相应颜色的棋子,并将该位置的状态改为已有棋子。

同时,程序会检查当前落子是否符合规则,即该位置是否为空,如果不为空则重新等待鼠标点击。

3.胜负的判断胜负的判断主要包括横向、纵向、斜向和反斜向四个方向。

通过判断当前落子位置在这四个方向上的连续棋子数是否达到五个来确定胜负。

如果达到五个,则程序会弹出相应的提示框,显示胜利方。

四、总结通过本次课程设计,学生掌握了C语言的编程思想和开发方法,同时了解了五子棋游戏的规则和策略。

本次设计主要包括棋盘的绘制、落子的判断和胜负的判断等功能。

希望本次课程设计能够增强学生的编程能力和对五子棋游戏的理解。

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

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

学生课程设计报告五子棋的设计与实现一、课程设计内容该程序是通过C++编写,具备存储,调用,修改和查询学生基本信息的管理系统,该程序并嵌入了五子棋游戏作为附加应用。

嵌入的五子棋程序具备自动输出表格功能,并通过双人对弈实现该游戏的操作,并且该程序中的函数具备判断胜负方的功能二、技术路线以C、c++语言为编程语言,组合不同功能的函数进行功能的叠加三、设计与实现1.五子棋的设计与实现:(1)首先画棋盘,用一个19*19的二维数组来画棋盘。

(2)设计一个转义函数:把二维数组的内容转义成符号。

(3)设计一个判断函数,分别对白黑子从横、竖、左斜、右斜四个方向判断是否连成五子,每个方向分成两部分,每个部分用一个循环来完成是否连成五子的判断。

只要连成了五子,返回一个值来记录。

例如其中的一个判断竖直方向的代码(其他的类似):for(inti=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 语言构造了学生信息的结构体,并且创建了查看函数、保存函数、打开函数、颜色函数等功能函数分别完成信息管理系统的存储信息、查找信息、修改信息等功能。

c语言五子棋课程设计

c语言五子棋课程设计

c语言五子棋课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言的基本语法和编程技巧;2. 学生能运用C语言编写五子棋游戏的基本功能,包括棋盘的初始化、玩家输入、落子、判断胜负等;3. 学生能通过五子棋案例,理解并掌握数组和循环等C语言核心知识点的应用。

技能目标:1. 学生能够运用结构化的编程思想进行问题分析,将复杂问题分解为可解决的小问题;2. 学生能够独立完成五子棋游戏的编写,培养编程实践能力和解决问题的能力;3. 学生通过团队协作完成课程项目,提高沟通和协作能力。

情感态度价值观目标:1. 学生在编程实践中培养逻辑思维能力和创新意识,增强对编程的兴趣和热情;2. 学生通过五子棋游戏的设计与实现,体验编程带来的成就感,提高自信心;3. 学生在团队协作中学会相互尊重、理解和帮助,培养良好的合作精神。

二、教学内容1. C语言基础语法回顾:变量定义与使用、数据类型、运算符、表达式、控制语句(if、for、while等);2. 数组的应用:一维数组、二维数组,重点讲解二维数组在五子棋棋盘中的应用;3. 函数的定义与调用:编写功能模块,如初始化棋盘、打印棋盘、落子、判断胜负等函数;4. 指针的应用:指针与数组的关系,通过指针操作五子棋棋盘;5. 五子棋游戏设计与实现:分析游戏需求,设计游戏流程,编写代码实现游戏功能;6. 结构体的使用:定义玩家信息结构体,存储和管理玩家信息;7. 文件操作:读取和保存棋局,实现游戏进度保存与加载;8. 算法与逻辑:介绍五子棋胜负判断的算法,以及优化策略;9. 项目实践:学生分组进行五子棋游戏的开发,按照教学进度完成相应功能;10. 课堂讨论与展示:分析项目中的问题与解决方法,分享编程技巧,展示团队成果。

教学内容按照课本章节进行组织,确保学生能够将所学知识应用于实际项目中,逐步掌握C语言编程的核心技能。

三、教学方法本课程采用以下多样化的教学方法,旨在激发学生的学习兴趣,提高学生的主动性和实践能力:1. 讲授法:教师以清晰、生动的语言讲解C语言的基本概念、语法规则和五子棋游戏设计原理。

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

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

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章引言通过一学期的课程学习,对<C++程序设计>和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)进入主界面后,选择开始游戏。

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

C语言程序设计题目五子棋(双人对战)指导教师曹东燕学生姓名夏文龙于文杰邢健学号 201000802032 201000802114 201000802097专业电子信息工程教学单位物理系(盖章)目录1设计内容与设计要求 (1)1.1系统功能简介 (1)1.2系统运行环境 (1)2程序流程图 (1)3运行的运行及说明 (2)3.1系统的运行 (2)3.2运行说明 (4)4课程设计目的………………………………………………….5 程序特色 (5)6总结 (5)附件:源程序清单 (5)1设计内容与设计要求1.1系统功能简介该系统是五子棋的人人对战模式,而非平常的人机对战系统有简单的菜单界面1.2系统运行环境Vc++6.0下运行,硬件基本无要求,现在的计算机系统基本都可以运行该系统。

2程序流程图3系统的运行及说明3.1系统的运行图3-1程序的初始化界面程序初始化的界面,界面简洁明快,便于观察。

图3-2程序的运行界面图3-3程序的介绍界面3-2运行说明A向左 W向上 D向右 S向左空格键确定当结束时按Y重新开始游戏按N退出游戏4课程设计目的五子棋游戏不仅能增强人们的抽象思维能力、逻辑推理能力、空间想象力,提高人们的记忆力、心算能力等,而且深含哲理,有助于修身养性。

五子棋既有现代休闲方式所特有的特征“短、平、快” ,又有中国古典哲学所包含的高深学问“阴阳易理” ;它既有简单易学的特点,为人民群众所喜闻乐见,又有深奥的技巧;既能组织举办群众性的比赛、活动,又能组织举办高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观,它是中西方文化的交融点,也是中西方文化交流的一个平台。

自从计算机作为游戏对战平台以来,各种棋类游戏如雨后春笋般纷纷冒出。

五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。

同时具有简单易学、既动手又动脑的特点。

同时也为锻炼自己的编程能力。

5程序特色本程序简洁明快,采用黑白两色棋,并且本程序为双人对战。

6总结通过这次实习,让我们初步有了编写系统的能力,我们对很多的函数有了新的认识,也学会了运用多种函数,也明白了编写软件的基本过程,和基本方法。

编写软件的过程中我们又学到了曾经自己不知道的函数或是自己不会的函数的用法。

这次课程设计课总的来说让我受益匪浅。

在这几天的编写过程中我们对c语言有了更进一步的认识和了解。

此次编程过程的经验和知识肯定能促进我以后的学习。

此次课程设计不仅给了我们很多很好的经验,也让我们体会到了失败时的焦急和难受,也体会到了成功时的兴奋与喜悦。

附件:源程序清单#include <stdio.h>#include <conio.h>#include <stdlib.h>void main(){//q:20*20棋盘数据数组,0表示空,1表示黑棋,2表示白棋//h:游戏状态量,变化范围为0、1、2,0表示退出游戏,1表示初始化游戏数据,2表示进行游戏//i:循环辅助量//j:键盘输入结果//k:从二维坐标得到的一维数组下标//l:黑白子变化辅助量,变化范围为1、2,1为当前下的是黑棋,2为当前下的的是白棋//m:输赢判断结果,变化范围为0、1、2,0表示没有输赢,1表示黑棋赢,2表示白棋赢//x:游标的X坐标//y:游标的Y坐标char q[400];int h, i, j, k, l, m, x, y;//第一次进入游戏循环,首先初始化游戏数据h = 1;while (h){if (h == 1){//初始化棋盘for (i = 0; i < 400; ++i)q[i] = 0;//初始化黑白子变化辅助量,黑棋先行l = 2;//初始化输赢判断结果,当前没有输赢m = 0;//初始化游标坐标x = y = 0;//初始化完毕进行游戏h = 2;}else{//清屏system("cls");//绘制棋子、棋盘for (i = 0; i < 400; ++i){if (y * 20 + x == i){if (q[i] == 1)printf("■");else if (q[i] == 2)printf("□");elseprintf("◎");}else{if (q[i] == 1)printf("●");else if (q[i] == 2)printf("○");else{if (i == 0)printf("┏");else if (i == 19)printf("┓");else if (i == 380)printf("┗");else if (i == 399)printf("┛");else if (i > 0 && i < 19)printf("┳");else if (0 == i % 20)printf("┣");else if (19 == i % 20)printf("┫");else if (i > 380 && i < 399)printf("┻");elseprintf("╋");}}if (19 == i % 20)printf("\n");}//接收输入j = _getch();//更新游标坐标if (y > 0 && (j == 'w' || j == 'W')) --y;if (y < 19 && (j == 's' || j == 'S')) ++y;if (x > 0 && (j == 'a' || j == 'A')) --x;if (x < 19 && (j == 'd' || j == 'D')) ++x;//下子if (j == ' '){//从二维坐标转换到一维数组索引k = y * 20 + x;//设置数据if (0 == q[k])q[k] = (l = (l == 2) ? 1 : 2);//设置胜负判断结果m = 0;//左右胜负判断for (i = -4; i < 1; ++i){//边界判断if (x + i < 0 || x + i + 4 > 19)continue;else{//得到最左边棋子的索引k = y * 20 + x + i;//连棋判断,若成立则修改胜负判断结果if (q[k] == q[k + 1] &&q[k + 1] == q[k + 2] &&q[k + 2] == q[k + 3] &&q[k + 3] == q[k + 4]){m = l;break;}} }//上下胜负判断for (i = -4; i < 1; ++i){//边界判断if (y + i < 0 || y + i + 4 > 19)continue;else{//得到最上边棋子的索引k = (y + i) * 20 + x;//连棋判断,若成立则修改胜负判断结果if (q[k] == q[k + 20] &&q[k + 20] == q[k + 40] &&q[k + 40] == q[k + 60] &&q[k + 60] == q[k + 80]){m = l;break; } } }//左上右下胜负判断for (i = -4; i < 1; ++i){//边界判断if (x + i < 0 || x + i + 4 > 19 || y + i < 0 || y + i + 4 > 19)continue;else{//得到最左上边棋子的索引k = (y + i) * 20 + x + i;//连棋判断,若成立则修改胜负判断结果if (q[k] == q[k + 20 + 1] &&q[k + 20 + 1] == q[k + 40 + 2] &&q[k + 40 + 2] == q[k + 60 + 3] &&q[k + 60 + 3] == q[k + 80 + 4]){m = l;break; }} }//左下右上胜负判断for (i = -4; i < 1; ++i){//边界判断if (x + i < 0 || x + i + 4 > 19 || y - i > 19 || y - i - 4 < 0)continue;else{//得到最左下边棋子的索引k = (y - i) * 20 + x + i;//连棋判断,若成立则修改胜负判断结果if (q[k] == q[k - 20 + 1] &&q[k - 20 + 1] == q[k - 40 + 2] &&q[k - 40 + 2] == q[k - 60 + 3] &&q[k - 60 + 3] == q[k - 80 + 4]){m = l;break; } }} }//胜利结果选择if (m != 0){//打印胜利结果if (m == 1)printf("白棋胜利!\n");elseprintf("黑棋胜利!\n");//用户输入选择do{printf("重新游戏请按Y,退出游戏请按N:\n");j = _getch();} while (j != 'y' && j != 'Y' && j != 'n' && j != 'N');//根据选择设置游戏状态if (j == 'y' || j == 'Y')h = 1;else h = 0;} } }}。

相关文档
最新文档