JAVA课程设计 五子棋

时间:2024.4.21


攀枝花学院课程业设计

五子棋

学生姓名:

号:

所在院()数学院计算机学院

业:信息与计算科学

师:讲师

二?##年

攀枝花学院教务处制


攀枝花学院本科学生课程设计任务书

注:任务书由指导教师填写。

课程设计(论文)指导教师成绩评定表

摘 要

五子棋作为一类棋类竞技运动,现在很流行,很多人把它作为一类开发智力的一种游戏,锻炼人的思维。这次课题主要是完成人机对战,在对战中电脑根据人的思维做出相应的反应,电脑对战中通过深度的搜索,使得自身有更大的胜算,估值计算也是一种方法,可以提高电脑的智能度。分析模块中影响智能的因素也不少,通过节点比较与节点连接后的结果做出估计提高智能,了解递归算法、电脑学习等对此有很大帮助。算法是程序的灵魂,一旦算法正确那么程序将很好。不同的人工智能将会有不同的帮助,多去了解将更能提高智能程度。五子棋是我国的一门文化,这将使得它更受世界人们的欢迎。有助我国文化发展。

关键词 五子棋,智能,算法,模块,人机对战


目录

1 需求分析..................................................................... 1

1.1需求来源.................................................................... 1

1.2设计目的.................................................................... 1

2 功能需求分析................................................................. 1

2.1功能需求.................................................................... 1

3 设计与实现................................................................... 2

3.1设计思想.................................................................... 2

3.2系统模块结构................................................................ 2

3.3流程图...................................................................... 2

4 概要设计..................................................................... 4

4.1抽象数据类型定义............................................................ 4

4.2程序包含模块................................................................ 4

4.3模块间关系.................................................................. 4

4.4系统功能实现................................................................ 4

5 模块设计..................................................................... 5

5.1主界面模块.................................................................. 5

5.2选择模块.................................................................... 5

5.3判断模块、.................................................................. 5

5.4显示模块.................................................................... 5

参 考 文 献.................................................................... 9


1需求分析

1.1需求来源

计算机在我们的生活中有越来越重要的角色,我们也越来越离不开计算机,计算机带给我们许多便利,学习好计算机知识已经是必不可少的一项技能了。特别是电子商务、电子邮件等,人工智能现在的热点方向,人们感叹计算机的高效是也感叹自己的聪明,人工智能现在是很好的以方面。

1.2设计目的

该软件为用户提供一个在Windows系统上运行的五子棋游戏小系统。应达到的目的是:建立人机对战的模块,可以机器思考如何应对。已达到提高智力的效果

设计出五子棋的游戏界面,创建对象可以在地图中站位,在每一步后计算机会自己运算自己的下一步,任何一方不可以越界,当一方达到五子是判断谁是胜利者,在过程中尽量使得游戏智能程度更高。

2功能需求分析

2.1功能需求

现在研究五子棋的算法已经很多了,比较经典的有递归、二叉树等,这也是很基础的,不同算法要求也不同,要求的能力也不同,每一种算法都是使得程序清晰明白,当五子相连就算胜利。故我们要理解中间过程。

每个代码实现功能也是不同的,有的是判断,有的是理解,有的是更好知道程序,程序在执行时我们可以知道哪里出错。哪里会有问题,修改便利。、在错误中学习,加强自己的基础知识与算法的能力。

3设计与实现

3.1设计思想

对五子棋进行模块合理需求分析后,在思考整体布局,首先是如何进行设计与开发的思维,在此基础上用图表画出大体的框架图,在进行合理的模块划分,并用框架图画出,在分模块实现。

总体思维:首先是整体的框架地图,在然后是游戏上的功能键设置,功能选项设计,在游戏开始后棋手与电脑的对战,在胜利的时候做出判断(即五子相连时可以有结束提示);关键是电脑部分要尽量智能,保证游戏价值。

3.2系统模块结构

系统模块结构:大概分为界面模块、功能模块、判断模块、主要也就是判断模块,在棋手或者电脑达到五子时给出正确的结果,及在开始前就要有功能选择,保证在功能选择部分设计。大体模块如下图。


3.3流程图


4概要设计

4.1抽象数据类型定义

(1)对界面设计,可以选择界面的大小。

publicChessFrame() {

界面的窗口设计}

(2)主要的框架设计和参数

publicJMenu makeMenu(Object parent, Object items[], Object target){

}

(3)判断分析

publicbooleanjudgeSuccess(intx,inty,booleanisodd){

是否五子相连

}

4.2程序包含模块

界面模块public ChessFrame()

{}界面窗口的大小选择,显示界面。

地图范围模块

publicvoidMapSize(intw,inth){

限制游戏者的游戏范围}

结束模块

publicbooleanjudgeSuccess(intx,inty,booleanisodd){

是否五子相连}

4.3模块间关系


4.4系统功能实现

要实现五子棋游戏关键是地图设计与功能设计,选择地图与谁先开始是一个关键,先要进行选择,进行后,要判断谁先达到五子,保证谁胜利。

5模块设计

5.1主界面模块

该模块主要是进行显示地图大小,限制地图的长与宽,保证游戏者的棋子不会超过范围,可以正常的进行游戏。

5.2选择模块

主要进行选择功能,选择地图的大小,游戏者谁先进行游戏。

5.3判断模块、

主要是判断谁先达到五子,判定达到五子的为胜利,在判断的过程中每一步都进行判断,一直到谁最先到五子相连,后一步都不可以。

5.4显示模块

就是界面显示的一部分,用于显示结果。

测试与运行

开始前的界面

功能选择

开始后的界面

最后的结果

结 论

通过这次设计,使我在java的运用有新的理解、java的选择应用、算法的设计及其实现等方面加深了对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

在此之前,我脑袋里面没有java思想,java在我心中就是对象的创建。当时就感觉好难,什么也不能做,但是真正接触后并没有想象的那么难,有什么不懂的上网去搜索,这是一个信息横流的世界,有google,baidu就没有不能解决的知识难题。在网上搜索点有关的资料后,然后再利用自己在课堂上所学的知识,与和我一组的同学讨论并且将所有内容连接起来,所有问题就迎刃而解。课程设计是以学生自学为主、指导教师指导为辅,认真、独立地完成课程设计的任务,有问题就要及时主动与指导教师沟通。在老师的悉心指导下和同学们的帮助下,使我顺利地完成了此次课程设计。所以,要特别感谢指导老师和各位同学,我相信这次课程设计将会是我以后不管是工作还是学习不可多得的经验。


参 考 文 献

[1]朱福喜.《Java语言程序设计》(第二版).科学出版社

[2]陈国君等.《Java程序设计基础》(第二版).清华大学出版社

[3] Deitel.《Java大学基础教程》(第六版).电子工业出版社

[4] MaryCampione.《Java语言导学》(第四版).机械工业出版社

[5] Y.Daniel Liang.《Java语言程序设计基础篇》(第六版). 机械工业出版社

[6] Kathy Sierra.《Head First Java》(第二版).东南大学出版社

package day17.gobang;

import java.util.Arrays;

public class GoBangGame {

public static final char BLANK='*'; public static final char BLACK='@';

public static final char WHITE='O';

public static final int MAX = 16;

private static final int COUNT = 5; //棋盘

private char[][] board; public GoBangGame() {

}

//开始游戏

public void start() {

board = new char[MAX][MAX];

//把二维数组都填充‘*’

for(char[] ary: board){

Arrays.fill(ary, BLANK);

} }

public char[][] getChessBoard(){

return board; }

public void addBlack(int x, int y) throws ChessExistException{ //@

//char blank = '*';

//System.out.println( x +"," + y + ":" + board[y][x] + ",//+ BLANK);

if(board[y][x] == BLANK){// x, y 位置上必须是空的才可以添棋子 board[y][x] = BLACK; return; }

throw new ChessExistException("已经有棋子了!");

}

public void addWhite(int x, int y) throws ChessExistException{

if(board[y][x] == BLANK){// x, y 位置上必须是空的才可以添棋子 board[y][x] = WHITE;

return;

} throw new ChessExistException("已经有棋子了!");

} //chess 棋子:'@'/'O'

public boolean winOnY(char chess, int x, int y){

//先找到y方向第一个不是 blank的棋子

int top = y; while(true){

if(y==0 || board[y-1][x]!=chess){

//如果y已经是棋盘的边缘, 或者的前一个不是chess

//就不再继续查找了 break;

} y--;

top = y; }

//向回统计所有chess的个数,如果是COUNT个就赢了

int count = 0; y = top; while(true){

if(y==MAX || board[y][x]!=chess){

//如果找到头 或者 下一个子不是chess 就不再继续统计了 break;

} count++;

y++; } return count==COUNT; }

//chess 棋子:'@'/'O'

public boolean winOnX(char chess, int x, int y){

//先找到x方向第一个不是 blank的棋子 int top = x; while(true){ if(x==0 || board[y][x-1]!=chess){

//如果x已经是棋盘的边缘, 或者的前一个不是chess

//就不再继续查找了 break; }

x--;

top = x; }

//向回统计所有chess的个数,如果是COUNT个就赢了

int count = 0; x = top;

while(true){

if(x==MAX || board[y][x]!=chess){

//如果找到头 或者 下一个子不是chess 就不再继续统计了 break;

} count++;

x++; } return count==COUNT; }

//chess 棋子:'@'/'O'

public boolean winOnXY(char chess, int x, int y){

//先找MAX向第一个不是 blank的棋子 int top = y; int left = x; while(true){ if(x==0 || y==0 || board[y-1][x-1]!=chess){

//如果x已经是棋盘的边缘, 或者的前一个不是chess

//就不再继续查找了 break;

} x--; y--;

top = y; left=x; }

//向回统计所有chess的个数,如果是COUNT个就赢了

int count = 0; x = left; y = top;

while(true){

if(x==MAX || y==MAX || board[y][x]!=chess){

//如果找到头 或者 下一个子不是chess 就不再继续统计了 break;

} count++;

x++;搜索 y++; } return count==COUNT; }

//chess 棋子:'@'/'O'

public boolean winOnYX(char chess, int x, int y){

//先找到x方向第一个不是 blank的棋子

int top = y; int left = x;

while(true){ if(x==MAX-1 || y==0 || board[y-1][x+1]!=chess){

//如果x已经是棋盘的边缘, 或者的前一个不是chess

//就不再继续查找了 break;

} x++; y--; top = y;

left=x; }

//向回统计所有chess的个数,如果是COUNT个就赢了

int count = 0; x = left; y = top;

while(true){

if(x==0 || y==MAX || board[y][x]!=chess){

//如果找到头 或者 下一个子不是chess 就不再继续统计了 break;

} count++;

x--; y++; }

return count==COUNT; }

public boolean whiteIsWin(int x, int y) {

//在任何一个方向上赢了,都算赢

return winOnY(WHITE, x, y) ||

winOnX(WHITE, x, y) ||

winOnXY(WHITE, x, y) ||

winOnYX(WHITE, x, y); }

public boolean blackIsWin(int x, int y) {

return winOnY(BLACK, x, y) ||

winOnX(BLACK, x, y) ||

winOnXY(BLACK, x, y) ||

winOnYX(BLACK, x, y); }}

更多相关推荐:
五子棋-课程设计报告

五子棋-课程设计报告单位分院(系)专业学号学生姓名指导教师完成日期20xx年05月日摘要五子棋的历史:五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手…

五子棋游戏 课程设计报告(含源代码可以运行)

五子棋游戏课程设计报告(含源代码可以运行)目录第一章需求分析.11.1总体分析.11.2初始化.11.3主循环控制模块.11.4玩家下子.11.5盘面分析填写棋型表.21.6对方下子.21.7胜负判断.2第二章…

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

北京师范大学C语言课程设计报告课题名称:游戏五子棋指导教师:课题组员:院系:信息科学与技术时间:20##.3.15-20##.4.20摘要五子棋是一种两人对弈的纯策略型棋类游戏,应用C语言编写程序可以在计算机上…

《C++语言程序设计》课程设计报告--五子棋

C语言程序设计课程设计报告课程题目年级专业学号姓名指导教师江苏师范大学数学与统计学院摘要五子棋是我国古代的传统的黑白棋种之一五子棋不仅能增强思维能力提高智力而且富含哲理有助于修身养性本游戏是以C语言作为开发工具...

20xx年C语言五子棋课程设计报告

本科控制软件设计课程设计题目五子棋学院计信院专业自动化年级学号姓名谯平同组人张健李益指导教师黄仁杰20xx年9月6日1目录1设计简介32设计模块3小组分工4流程图5设计过程6调试过程7分析与总结8源程序4445...

c++五子棋课程设计报告

福建农林大学计算机与信息学院课程设计报告课程名称课程设计题目姓名系专业年级学号指导教师职称面向对象程序设计课程设计五子棋计算机软件工程年月日福建农林大学计算机与信息学院计算机类课程设计报告结果评定2目录1设计目...

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

封面Java语言程序设计课程设计报告分院电信分院班级电子商务1班姓名何芳林学号20xx0210460123指导教师吴军良课设时间20xx1220至20xx1231二O一一年十二月二十日10电商1班何芳林Java...

五子棋程序设计报告

宜宾学院面向对象课程设计学院计算机与信息工程学院班级20xx级6班学生姓名郑亮学号141106020设计地点单位宜宾学院设计题目双人五子棋完成日期20xx年12月5日目录1问题要求及任务描述411题目要求412...

五子棋游戏程序设计报告

计算机学院网络工程专业程序设计综合课程设计报告20xx20xx学年第一学期学生姓名学生班级学生学号指导教师20xx年12月30日双人五子棋目录第一章课程设计目的和要求111课程设计的目的112课程设计的要求1第...

C语言五子棋源代码 - 课程设计报告

计算机程序设计基础C语言课程设计题目简易五子棋软件设计院系部信息工程学院姓名张卓班级自103学号10072820xx年7月5日北京目录1课程设计报告311课题描述312需求分析313概要设计4131功能模块41...

基于java程序的五子棋游戏设计 开题报告

陕西科技大学镐京学院毕业设计论文任务书系专业班级学生题目基于JAVA程序的五子棋游戏设计毕业设计论文从20xx年3月20日起到20xx年6月25日课题的意义及培养目标课题意义随着社会经济的迅速发展人们生活水平有...

C语言课程设计五子棋源代码_+设计报告

C语言程序设计综合实验设计报告题目班级人数小组成员时间目录1课程设计报告11课题描述12需求分析13概要设计2源程序代码3详细设计1课题设计报告11课题分析游戏介绍在一个1818的方格中下棋两个玩家根据键盘上的...

五子棋课程设计报告(33篇)