五子棋人人对战_c++五子棋课程设计报告.doc_第1页
五子棋人人对战_c++五子棋课程设计报告.doc_第2页
五子棋人人对战_c++五子棋课程设计报告.doc_第3页
五子棋人人对战_c++五子棋课程设计报告.doc_第4页
五子棋人人对战_c++五子棋课程设计报告.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

vc课程设计报告学 院:理学院专业班级:信息与计算科学 班学生姓名:*学生学号:12345指导教师:#提交时间:2013年 07 月 02 日成 绩:设计题目: 五子棋人人对战 目录第1章 引言4第2章 任务概述42.1问题概述42.1.1问题重述42.1.2设计目的42.2需求分析42.2.1基本要求42.2.2游戏功能介绍4第3章 概要设计43.1功能设计43.2程序结构43.3基本流程4第4章 程序实现44.1主要变量及函数的说明44.1.1主要变量44.1.2主要函数44.2主要功能的实现44.2.1类声明44.2.2棋盘初始化44.2.3开始下棋44.2.4判断下棋合法44.2.4判断输赢4第5章 结果与总结45.1 运行结果截图45.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) 玩家选择结束游戏时,结束游戏。第3章 概要设计3.1功能设计程序主要实现的功能如下所述:(1)启动程序,出现主界面。(2)显示棋盘。(3)选择开始游戏。(4)有一方开始下棋,并判断下棋是否合理。(5)判断输赢。(6)有另一方开始下棋,并判断下棋是否合理。(7)判断输赢。(8)选择是否继续。(9)游戏结束后,退出游戏。3.2程序结构程序的结构如下图所示: 图3.2程序结构 3.3基本流程根据游戏规则及其结构图,画出如下程序基本流程图: 图3.3基本流程第4章 程序实现4.1主要变量及函数的说明4.1.1主要变量char board1414; /棋盘大小int x; /下棋的横坐标int y; /下棋的列坐标int count; /下棋的个数int a; /交换下棋4.1.2主要函数void mainform(); /显示主菜单void playeplain(); /游戏说明void printboard(); / 打印初始棋盘 void initialboard(); /初始化棋盘void playchess(); /开始下棋 wuziqi(); /初始化a和count,a是交换下棋,count记录棋盘是否下满int checkwin(int x,int y); /判断赢棋4.2主要功能的实现4.2.1 类声明class wuziqipublic:void mainform(); /显示主菜单 void playeplain(); /游戏说明void printboard(); /打印初始棋盘 void initialboard(); /初始化棋盘void playchess(); /开始下棋 wuziqi(); /初始化a和count,a是交换下棋,count记录棋盘是否下满private:int checkwin(int x,int y); /判断赢棋char board1313; int x; /下棋的横坐标int y; /下棋的列坐标int count; /计数判断是否满int a; /判断谁落子;4.2.2棋盘初始化void wuziqi:initialboard() /初始化棋盘,将所用的位置设置为空格for(i=1;imxa;i+)for(i=1;imxa;i+)将所有下棋的格线设为空格void wuziqi:printboard() /打印棋盘 利用制表符打印棋盘( )4.2.3开始下棋void playchess(); /开始下棋由a 的值决定下棋方if(a=0)一方下棋else另一方下棋用坐标决定下棋位置4.2.4判断下棋合法如果输入是否越界 如果boardxy= 空格就可以下棋 boardxy 设为 如果boardxy是否已经有棋子 输出 输入错误,此位置已经有棋子了,请重新输入!endl; continue;返回去继续输入。 如果输入是否越界 cout 输入位置超出范围,请重新输入!endl;printboard();打印棋盘返回重新输入4.2.5判断输赢int checkwin(int x,int y); /判断赢棋当一方有五个棋子连成线时赢,用-1和1判断输赢,当棋盘满是为平局。 第5章 结果与总结5.1 运行结果截图1.启动画面图5-1启动画面2.游戏说明图5.2游戏说明 3.退出游戏图5.3退出游戏4进入游戏图5-4 进入游戏5输入越界 图5-5输入超出范围6。已有棋子 图5-6已有棋子7游戏进行图5-7 游戏进行8.判断输赢图5-8 判断输赢5.2总结编辑小游戏这在以前我都以为是遥不可及,但现在通过这次五子棋的设计我明白了,并不是如此,通过课程设计,我们对c+程序设计这门课程有了更深一步的了解。它是计算机程序设计的重要技术。同时也使我知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。另外,在课程设计期间,让自己的思维变得活跃,也会看懂,学明白程序问题,总之,受益匪浅。参考文献:c+程序设计(第8版)(美)walter savitch 清华大学出版社附录:#include#include /setw(3)using namespace std;const int max=13;class wuziqipublic:void mainform(); /显示主菜单 void playeplain(); /游戏说明void printboard(); /打印初始棋盘 void initialboard(); /初始化棋盘void playchess(); /开始下棋 wuziqi(); /初始化a和count,a是交换下棋,count记录棋盘是否下满private:int checkwin(int x,int y); /判断赢棋char board1313; int x; /下棋的横坐标int y; /下棋的列坐标int count; /计数判断是否满int a; /判断谁落子;/wuziqi:wuziqi():a(0) /将a初始化为0/void wuziqi:playchess()count=0;for(;) /交换下棋 /玩家输入if(a=0) /先下棋cout请玩家输入下棋位置!endl; coutx; couty;system(cls); /清屏if(x0&x0&y=max) /判断请输入是否越界if(boardxy= ) /如果boardxy= 就可以下棋boardxy=o; / printboard1();printboard();count+;else /如果boardxy是否已经有棋子 system(cls);cout 玩家输入错误,此位置已经有棋子了,请重新输入!endl;/printboard1();printboard();continue;else system(cls);cout 玩家输入位置超出范围,请重新输入!endl;/printboard1();printboard();continue;if(checkwin(x,y)=1) /判断输赢cout 恭喜玩家获得胜利!endlendl;break; if(count=max*max) /判断是否下满cout平局!endl;break;a=1;/玩家输入和玩家输入一样else if(a=1)cout请玩家输入下棋位置!endl; coutx; couty;system(cls);if(x0&x0&y=max)if(boardxy= )boardxy=x;printboard();count+;else system(cls);cout 玩家输入错误,此位置已经有棋子了,请重新输入endl;printboard();continue;else system(cls);cout 玩家输入位置超出范围,请重新输入!endl;printboard();continue;if(checkwin(x,y)=-1)cout 恭喜玩家获得胜利!endl;break;if(count=max*max)cout平局!endl;break;a=0;/void wuziqi:initialboard()/初始化棋盘,将所用的位置设置为“ ”for(int i=0;i14;i+)for(int j=0;j14;j+)boardij= ;void wuziqi:printboard()/打印棋盘coutendl;cout*-*-*-*-*-*-*-*-*-*-*-*-*-*五子棋棋盘*-*-*-*-*-*-*-*-*-*-*-*-*endl;int i,j;cout ;for(i=1;i=max;i+)coutsetw(2)i;coutendl;for( i=1;imax+1;i+)for( j=1;jmax+1;j+)if(boardij=o)if(j=1)coutsetw(20)i;elsecout; else if(boardij=x) if(j=1)coutsetw(20)i;elsecout;elseif(i=1)&(j=1)coutsetw(20)1;else if(i=max)&(j=1)coutsetw(20)max; else if(i=1)&(j=max) cout; else if(i=max)&(j=max) cout0)&(jmax) cout1)&(imax)&(j=1) coutsetw(20)i1)&(jmax) cout1)&(imax) cout; else cout; coutendl;/最开始时的棋盘/*void wuziqi:printboard()coutendl;cout*-*-*-*-*-*-*-*-*-*-*-*-*-*五子棋棋盘*-*-*-*-*-*-*-*-*-*-*-*-*endl;int i,j,k;system(color 0a); cout ;for(k=0;k=max;k+)coutsetw(4)k;coutendl; cout endl;for( i=1;imax;i+)cout setw(3)i;for(j=1;j=max;j+) boardij= ;cout boardij; coutendl;cout endl;cout setw(3)13;for(j=1;j=max;j+) boardij= ; cout boardij; coutendl; cout endl;/*void wuziqi:printboard1()coutendl;cout*-*-*-*-*-*-*-*-*-*-*-*-*-*五子棋棋盘*-*-*-*-*-*-*-*-*-*-*-*-*endl;int i,j,k;system(color 0a); cout ;for(k=0;k=max;k+)coutsetw(4)k;coutendl; cout endl;for( i=1;imax;i+)cout setw(3)i;for(j=1;j=max;j+) / boardij= ;cout boardij; coutendl;cout endl;cout setw(3)13;for(j=1;j=max;j+) boardij= ; cout boardij; coutendl; cout endl;*/void wuziqi:mainform() cout *-*-*-*-*-*-*-*-*-*欢迎来到五子棋游戏 *-*-*-*-*-*-*-*-*-*endlendl; cout*-*-*-*-*-*-*-*-*-*-*人人对弈五子棋游戏*-*-*-*-*-*-*-*-*-*-*endl;cout 1.游戏说明 endl;cout 2.开始游戏 endl;cout 3.退出游戏 endl; cout*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*endl;cout请输入你的选择:;/void wuziqi:playeplain()cout*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*endl; cout*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*endl; cout*-* 游戏说明: *-*endl; cout*-* 1.第一个玩家用o第二个玩家用x; *-*endl; cout*-* 2.请根据提示输入所要走的行和列; *-*endl; cout*-* 3.谁先连成五个子谁胜利。 *-*endl; cout*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论