




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学校代码: 10128学 号:201320905020课程设计说明书题 目:五子棋学生姓名:杨震学 院:理学院班 级:信计13-1指导教师:白莲花 二一六年一月二十一日1内蒙古工业大学课程设计(论文)任务书课程名称: 面向对象的程序设计 学院: 理学院 班级: 信计13-1 学生姓名: 杨震 学号: 201320905020 指导教师: 白莲花 一、题目 五子棋游戏二、目的与意义面向对象程序设计课程设计可以培养学生综合运用所学面向对象程序设计知识和技能分析与解决实际问题的能力,以及严肃认真的科学态度和严谨求实的工作作风。 三、要求 l 采用面向对象程序设计语言c+进行程序开发l 选用一种c+语言的开发环境设计界面及程序l 在开发环境下,进行程序的运行及调试四、工作内容、进度安排 主要内容使用c+程序设计语言及其开发环境实现简单的五子棋游戏,完成程序的编写和调试。工作进度安排第一天:熟悉课程设计题目及具体要求,确定选择的语言开发环境,查阅资料、学习、讨论。第二天:根据课题给出的基本需求,进行认真分析和讨论,按照软件工程的思想,完成软件的面向对象分析工作。第三天到第四天:在面向对象分析的基础上,进行面向对象的设计工作,完成相关设计工作。第五天到第六天:进行面向对象实现工作,确定需要的用户界面以及结构,完成软件的整体框架,在开发环境下,编程实现所开发的系统。第七到第八天:调试、测试工作,相关的后期工作。第九和第十天:撰写课程设计报告五、主要参考文献1郑莉,董渊,何江舟.c+语言程序设计(第4版) m.北京:清华大学出版.2010.72stanley b.lippman,jose lajoie,barbara e.moo.c+ primer(中文版)(第四版)m.北京:人民邮电出版社.20063 walter savitch. c+面向对象程序设计基础、数据结构与编程思想(第4版)m.北京: 清华大学出版社.20034钱能.c+程序设计教程(第2版)m.北京:清华大学出版社.20055郑莉.c+语言程序设计案例教程(第1版)m.北京:清华大学出版社.20056韦朴,陈泰生. visual c+通用范例开发金典m.北京:电子工业出版社.2008审核意见 系(教研室)主任(签字) 指导教师下达时间 2015 年 12月 28日 指导教师签字:_摘要随着经济的发展,社会竞争的激烈,现在社会进入了竞争的时代。上班族为了完成公司业务,每天超负荷的工作;学生为了不落后他人每天早起晚睡不断地学习,压力巨大。所以为了缓解大家的压力,使大家在工作、学习之余娱乐一下,活跃大脑,提高工作、学习效率,因此益智性游戏越来越受人们的关注,五子棋作为益智类游戏之一,倍受人们的喜爱,所以对于五子棋的开发也有了很多关注。c+语言即是进行软件开发的直接工具,又是“数据结构”、“操作系统”、“编译原理”以及其他相关课程的先修课程,因此,在整个教学体系中占据十分重要的地位1。本文主要讲的是利用vc+6.0软件开发一个界面简洁、直观、实用性比较高的ai功能的五子棋游戏,游戏程序实现人人对弈,在对弈过程中当用户和用户比赛时电脑利用搜索算法计算出落子的最佳位置,是先人人对弈,而且程序能够完成具有重新开始、认输、提示该轮到哪一方下棋的、游戏、判断胜负、悔棋等功能。关键词:人工智能;自动处理;五子棋目录第一章 任务概述11.1问题概述11.2 需求分析1第二章 概要设计22.1功能设计22.2 程序结构22.3 基本流程3第三章 程序实现43.1主要变量及函数说明43.1.1 主要变量43.1.2 主要函数43.2 主要功能实现43.2.1棋盘类的声明43.2.2玩家类的声明53.2.3棋盘显示为方形53.2.4判断棋子显示位置是否合理63.2.5判断输赢6第四章 结果与总结74.1.运行过程及截图74.1.1棋盘初始化模块74.1.2输入错误提示94.1.3 结局判断模块10总结13参考文献14附录15引言五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“renju”,英文称之为“gobang”或“fir”(fiveinarow的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。当我们一个人无聊时,五子棋无疑成为一个令人爱不释手的游戏,五子棋容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。我的目的就是通过c+来创建一个网络对战的平台,可以让在电脑工作的人也有人人博弈的机会,开发自己的兴趣。通过这次课设,我可以独立的利用学习的c+程序设计和visaul c+6.0编写环境写程序,加强自己学习能力和解决问题的能力。第1章 任务概述1.1 问题概述设计一个五子棋,棋盘大小15*15,能实现人人对战。采用面向对象程序设计语言c+进行程序开发选用一种c+语言的开发环境设计界面及程序在开发环境下,进行程序的运行及调试使用c+程序设计语言及其开发环境实现简单的五子棋游戏,完成程序的编写和调试。1.2 需求分析明确五子棋游戏的游戏规则,编写程序实现其功能。为了更好的实现游戏,需求分析如下: (1) 选择游戏模式(2) 进入游戏。(3) 开始游戏,一方开始下子。(4) 另一方下子。(5) 判断游戏输赢。(6) 游戏结束。第二章 概要设计2.1功能设计 程序主要实现的功能如下所述:(1) 启动程序(2) 显示棋盘,并显示谁先开始下第一子(3) 另一方下子,判断下子是否有棋子(4) 判断输赢(5) 重复上面步骤(3)(4)(6) 游戏结束,显示胜利2.2 程序结构程序结构如下图: 图2.1 程序结构图2.3 基本流程 根据游戏规则及其结构图,画出如下程序基本流程图 图2.2基本流程图第三章 程序实现3.1主要变量及函数说明3.1.1 主要变量m_csquare /棋盘坐标int m_x; /下棋的横坐标int m_y; /下棋的纵坐标3.1.2 主要函数void show(); /显示棋子isinchessboard /玩家落子的坐标isline /判断五子连线的方法iswin() /判断输赢3.2 主要功能实现3.2.1棋盘类的声明class chessboard/棋盘类public:char m_csquarerowcol2;public:chessboard();void show();3.2.2玩家类的声明class playerprivate:string m_name;char m_chesstype;int m_x;int m_y;chessboard* m_ptboard;public:player(string name, char chesstype) :m_name(name), m_chesstype(chesstype), m_ptboard(null)void attachtoboard(chessboard* ptboard) m_ptboard = ptboard; bool isinchessboard(int x, int y);bool isline(int x, int y);bool iswin();void setchess();3.2.3棋盘显示为方形void chessboard:show()system(cls);for (int i = 0; irow; i+)for (int j = 0; jcol; j+)cout m_csquareij ;3cout endl;3.2.4判断棋子显示位置是否合理bool player:isinchessboard(int x, int y)if (x0 & y0)return true;elsereturn false;3.2.5判断输赢bool player:iswin()return isline(m_x, m_y) ? true : false;第四章 结果与总结4.1.运行过程及截图4.1.1棋盘初始化模块开始游戏时游戏界面是没有旗子的,会显示让aaa玩家首先输入第一个旗子的坐标,如下图 图3.1游戏开始界面 所以当游戏开始始,必须做初始化,实现程序如下:#includechessboard.hchessboard:chessboard() for (int i = 1; irow - 1; i+) for (int j = 1; jcol - 1; j+) m_csquareij = ; for (int j = 0; jcol; j+) m_csquare0j = m_csquarerow - 1j = -; for (int i = 1; irow; i+) m_csquarei0 = m_csquareicol - 1 = |;void chessboard:show() system(cls); for (int i = 0; irow; i+) for (int j = 0; jcol; j+) cout m_csquareij ; cout endl; 4.1.2输入错误提示当某一方输入的棋子位置不合理时,会提示“输入有误,请玩家再次输入坐标”的提示。结果如图3.2所示。图3.2错误提示图4.1.3 结局判断模块 如何判断输赢:当某一方下一子后,计算与当前棋子相邻的四个方向的同色棋子个数,大于四则分出胜负,否则继续,判断是否在同一个直线上的算法流程如下图: 图3.3结局判断模块实现程序如下:bool player:isline(int x, int y)4 for (int direc = horizon; direc = lefttoptorightbottom; direc+) int tempx, tempy, cnt = 1; for (int i = -4; i m_csquaretempxtempy = m_chesstype)cnt+; else cnt = 0; if (cnt = 5) return true; return false;当程序认定某一方赢得比赛时,会提示这一方胜利,结果如图: 图3.4胜利结果图总结 编辑小游戏这在我以前认为是遥不可及的,但是通过这次的五子棋设计我明白了,所有的东西对我们来讲都不是遥不可及的。通过课程设计,我们也对c+程序设计这门课程有了更深入的了解。它是一门计算机程序设计的重要技术。通过这次的课程设计,我们丛一个函数到多个函数的有机集合到多个类的使用,其中经历了不少困惑和不解,但至少我们最后做到了,战胜了课程设计的恐惧,也收获了程序与运行成功的喜悦,有付出就有回报! 通过一个学期的学习,要把知识运用到这次的课程设计还是有点差劲,学到用时方恨少,发现自己学的不精通,只是懂的一点理论知识,对于一门技术来说,浅尝辄止是远远不够的,不够的。还好通过去网上搜索、去图书馆查找资料、请教老师同学等各种方式克服了一个又一个的困难。多样化的处理问题,才是成功之道,终于把设计给完成了!通过这次实践,我对编程有了新的理解,编程并不是像大多数人说的那样充满单调,乏味。一件东西的乐趣在于你能去接触去理解。我接触了,我理解了。让所学的运用于生活中,做到灵活运用,学有所成的兴奋是难得的宝贵。我在其中感悟到乐趣了,相信这是我编程高手之路的一个重要转折点参考文献1钱能.c+程序设计m.北京:清华大学出版社.19992罗建军.朱丹军.c+程序设计教程m.北京:高等教育出版社.20043张国峰.c+语言及其程序设计教程m.北京:电子工业出版.19974和克智.c+程序设计(第2版)m.西安:西安交通大学出版社.1999附录main.cpp#includechessboard.h#includeplayer.hint main()chessboard board;player playa(aaa, *);/玩家aaa的棋子形状是*playa.attachtoboard(&board);player playb(bbb, #);/玩家bbb的棋子形状是#playb.attachtoboard(&board);board.show();while (1)playa.setchess();/玩家a放下一个棋子if (playa.iswin()cout winer!; break;board.show();playb.setchess();/玩家b放下一个棋子if (playb.iswin()cout winer!; break;board.show();system(pause);return 1;chessboard.h#pragma once#define row 15#define col 15#includeusing namespace std;class chessboard/棋盘类public:char m_csquarerowcol;public:chessboard();void show();chessboard.cpp#includechessboard.hchessboard:chessboard()for (int i = 1; irow - 1; i+)for (int j = 1; jcol - 1; j+)m_csquareij = ;for (int j = 0; jcol; j+)m_csquare0j = m_csquarerow - 1j = -;for (int i = 1; irow; i+)m_csquarei0 = m_csquareicol - 1 = |;void chessboard:show()system(cls);for (int i = 0; irow; i+)for (int j = 0; jcol; j+)cout m_csquareij ;/这里的“ ”很重要,这样才能使屏幕上row*col输出为方形cout endl;player.h#pragma once/宏定义四种检测五子是否连成线的方向#define horizon 0#define vertical 1#define leftbottomtorighttop 2#define lefttoptorightbottom 3#includechessboard.h#includeusing namespace std;#includeclass playerprivate:string m_name;char m_chesstype;int m_x;int m_y;chessboard* m_ptboard;public:player(string name, char chesstype) :m_name(name), m_chesstype(chesstype), m_ptboard(null)void attachtoboard(chessboard* ptboard) m_ptboard = ptboard; bool isinchessboard(int x, int y);bool isline(int x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年三种人考试综合提升测试卷含答案详解(培优B卷)
- 期货从业资格之《期货法律法规》综合练习含答案详解(综合题)
- 2025年辽宁科技大学招聘高层次和急需紧缺人才130人笔试高频难、易错点备考题库带答案详解
- 2023年度特岗教师高分题库含答案详解【模拟题】
- 2025互动式网络安全防护系统采购合同
- 2024-2025学年度施工员测试卷含答案详解【巩固】
- 2025年职业病危害及预防措施试题及参考答案
- 2025年远程协作工具的效率优化研究
- 2023年度医院三基考试模拟试题及参考答案详解(研优卷)
- 2025中考数学总复习《锐角三角函数》每日一练试卷【夺冠】附答案详解
- 特殊教育《学习剪指甲》
- 投资担保合同范本7篇
- 高速公路工程项目居间费标准
- 污水处理中的养殖废水处理方法
- 兰州交通大学《高等数学》测验题库及参考答案
- 幼儿园主题网络图框架培训
- 2025年北京控股集团有限公司招聘笔试参考题库含答案解析
- 职场仪表培训
- 【MOOC】通信原理-西安邮电大学 中国大学慕课MOOC答案
- 《无人机飞行操控技术》课件 项目6、7 无人机地面站飞行操控、无人机维修与保养
- 2024石油石化储罐腐蚀检测作业标准规范
评论
0/150
提交评论