井字棋实验报告.docx

上传人:b****6 文档编号:7013259 上传时间:2023-01-16 格式:DOCX 页数:6 大小:19.31KB
下载 相关 举报
井字棋实验报告.docx_第1页
第1页 / 共6页
井字棋实验报告.docx_第2页
第2页 / 共6页
井字棋实验报告.docx_第3页
第3页 / 共6页
井字棋实验报告.docx_第4页
第4页 / 共6页
井字棋实验报告.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

井字棋实验报告.docx

《井字棋实验报告.docx》由会员分享,可在线阅读,更多相关《井字棋实验报告.docx(6页珍藏版)》请在冰豆网上搜索。

井字棋实验报告.docx

井字棋实验报告

井字棋实验报告

篇一:

井字棋实验报告

  课程:

班别小组成员

  人工智能原理及其应用

  12商本学号及姓名

  指导老师

  实验02井字棋

  1、总体要求:

1.1总体功能要求:

  利用不同的方法,实现人机对战过程中呈现出不同程度的智能特征:

(1)利用极大极小算法、α-β剪枝来提高算法的效率。

(2)使用高级语言,编写一个智能井字棋游戏。

  (3)结合极大极小算法的使用方法和α-β剪枝,让机器与人对弈时不但有智

  能的特征,而且计算的效率也比较高。

  1.2.开发平台要求:

  开发者开发的软件必须能够在不同系统的电脑上正常运行,因此开发平台为:

开发环境:

JDK1.6

  开发工具和技术体系:

  为了此游戏能够很好的在不同系统中运行,因选择javaee进行开发,利用eclipse

  1.3项目管理要求:

  

(1)项目程序编写过程中要适当的写一些注释,以便下次作业时能够快速的上手和以后的修改:

  

(2)项目程序要保存在一个固定的工作区间;(3)确保代码不要太多冗余

  2、需求分析:

  2.1软件的用户需求:

  井字棋游戏的用户希望游戏除了有一般的功能之外,还可以通过极大极小算法、α-β剪枝等方法是的井字棋游戏能够拥有智能特征,并是的电脑在人机对弈的过程中因玩家的难度选择而体现不同程度的智能状况。

2.2软件的功能需求:

  本游戏需要实现功能有:

(1)游戏的重新设置

  

(2)游戏统计(如:

人赢的次数、电脑赢的次数等)(3)游戏的退出

  (4)不同智能程度下(脑残、懵懂、正常、智能),人机对弈(5)既可以选择难度,也可以选择谁走第一步(人or电脑)2.3软件的性能需求:

  井字棋游戏需要以图形界面的形式表现出来,通过点击图标就可以进入游戏;在游戏进行时,人机对弈时电脑能够快速的反应并根据人的上一步动作作出,通过选择“脑残、懵懂、正常、智能”难度选择,电脑以不同程度的智能与人进行游戏对弈。

  2.4运行环境:

能够运行java程序的环境(装有jdk或者jre)

  2.5用户界面设计:

用gridlayout进行用户界面的设计把界面中分为不同的模块。

  3、软件概要设计

  3.1软件的逻辑设计:

就是系统的功能模块结构图

  4、软件详细设计4.1开发平台与环境Eclipse;JDK1.64.2用户界面的详细设计

  4.3各个模块的具体设计

  游戏界面主要是利用GridLayout来进行布局管理,把整个JFrame分成左右两部分pwleft和pwright。

  publicvoidLayout(){

  fw=newJFrame("井字棋");

  fw.setBounds(100,100,1000,600);cw=fw.getContentPane();pwleft=newJPanel();

  pwleft.setBorder(BorderFactory.createLineBorder(Color.black,1));

  pwright=newJPanel();

  pwright.setBorder(BorderFactory.createLineBorder(Color.black,1));

  pwleft.setLayout(newGridLayout(qipanX,qipanY));

篇二:

软件综合设计井字棋游戏实验报告

  成都信息工程大学

  软件综合设计实验报告

  ——井字棋游戏设计

  班级:

信号处理131

  姓名:

  学号:

  指导老师:

刘涛

  XX年3月

  一、实验目的

  熟悉和使用VC6++平台编程,了解VC6++编译、链接及如何查错纠正。

编程思路。

  编一个井字棋游戏。

  二、实验平台

  Windows系统平台下的VC6++

  三、实验要求

  1.建立一个控制台程序实现游戏;

  2.建立如下的变量

  charChessBoard[3][3]={0};

  intnCurrentPlayer=0;//1代表1#玩家。

2代表2#玩家

  intnCurrentRow=-1;//当前输入的行

  intnCurrentCol=-1;//当前输入的列

  intnOneWin=0;//1#玩家胜利数

  intnTwoWin=0;//2#玩家胜利数

  intnDrawGame=0;//和局

  3.游戏一开始,输出“xxx班xx同学(学号xxxxxxxx)欢迎您使用井字棋游戏”。

  4.新开始一局游戏,把棋盘的9个棋子全部清空为0.

  5.屏幕提示当前是1#玩家或者2#玩家,两个玩家(分别定义为1#和2#)分别轮流通过键盘输入放置棋子;

  6.对键盘输入的正确错误进行判断,包括:

  ?

输入的坐标是否越界?

  ?

输入的坐标是否已经有棋子了?

  ?

是否有一个玩家放置棋子后就连成一线而胜利?

  ?

是否放满了9个棋子仍然没有玩家获胜?

本局平局则为平局。

  ?

是否输入了退出游戏的命令?

如果是,则再次询问确定是否要退出。

  7.每一次轮到一个玩家输入前,先输出显示现在的棋盘上的棋子。

  8.对胜局、平局进行统计。

  9.胜利一局后,显示1#胜局数、2#胜局数,平局数。

  10.胜利一局后,询问是否要继续开始新的一局。

  11.AI预测。

每轮到一个玩家落子,在显示完当前棋盘状态后且输入坐标前,预测该玩家在(m,n)位置落子即可获胜。

(选作)

  12.程序注释,要求:

  ?

每一个变量的注释

  ?

每一个函数注释

  ?

每一个循环注释

  ?

每一个if-else分支语句注释

  ?

注释可以采用/**/或者//来注释

  13.不允许

  ?

不允许使用汉语拼音

  ?

不允许使用中文作为工程名、变量名、函数名

  四、实验内容

  1、

  //井字棋游戏

  //学号XX021047

  //姓名韦德鹏

  //班级信处131班

  #include"stdafx.h"

  charChessBoard[3][3]={0};

  intnCurrentPlayer=1;//1代表1#玩家。

2代表2#玩家

  intnCurrentRow=-1;

  intnCurrentCol=-1;

  intnOneWin=0;

  intnTwoWin=0;

  intnDrawGame=0;//和局

  voidClearChessBoard();//把棋盘的9个棋子全部清空为0

  voidShowChessBoard();//显示9个棋子

  voidDoInput();//获取键盘输入

  boolIsOutRange();

  boolIsHasChess();

  intWhoWin();

  boolIsFull();//检查是否越界//检查当前位置是否已经有棋子了//检查谁获胜//是否棋盘满了程序代码

  boolIsExitCmd();//是否是退出命令

  voidStatist

ics();//统计胜败和

  voidSetNextPlayer();//设置为下一个玩家

  intmain(intargc,char*argv[])

  {

  intExitCmd=1;//退出标记

  printf("电子工程学院XX级XXX,欢迎您使用井字棋游戏!

\n");

  ClearChessBoard();

  while(ExitCmd!

=0)//返回值如果为零,则显示退出!

  {

  ShowChessBoard();

  while

(1)

  {

  DoInput();//输入棋子,若是满足落子条件,则显示;不满足则跳出。

  ExitCmd=IsExitCmd();

  if(IsExitCmd()==1&&IsOutRange()==1&&IsHasChess()==1)

  {

  ChessBoard[nCurrentRow-1][nCurrentCol-1]='0'+nCurrentPlayer;//棋子落子

  ShowChessBoard();//显示落子情况

  }

  else

  {

  break;

  }

  if(WhoWin()!

=0)//统计玩家1#和2#的获胜情况,并清空棋盘

  {

  Statistics();//统计战况

  ClearChessBoard();//清空棋盘

  ShowChessBoard();//初始化棋盘

  }

  if(IsFull()!

=1)

  {

  Statistics();//统计战况

  ClearChessBoard();//清空棋盘

  break;

  }

  if(IsExitCmd()==0)

  {

  break;

  }

  SetNextPlayer();//交换玩家

  }

  }

  return0;

  }

  //****************************************************************//

  voidClearChessBoard()//把棋盘的9个棋子全部清空为0

  {

  chari,j;

  for(i=0;i  {

  for(j=0;j  {

  ChessBoard[i][j]='#';

  }

  }

  }

  //**************************************************************//

  voidShowChessBoard()//显示9个棋子

  {

  chari,j;

  printf("\n当前棋盘:

\n");

  for(i=0;i  {

  for(j=0;j  {

  printf("%c",ChessBoard[i][j]);

  }

  printf("\n");

  }

  }

  //*********************************************************************//

  voidDoInput()//获取键盘输入

  {

  printf("\n当前是%d#玩家.\n请输入当前棋子的行列坐标(0,0表示退出,i=[1,3],j=[1,3]):

",nCurrentPlayer);fflush(stdin);

  scanf("%d,%d",&nCurrentRow,&nCurrentCol);

  }

  //*********************************************************************//

  boolIsOutRange()

  {

  if(nCurrentRow>3||nCurrentCol>3||nCurrentRow  {

  printf("\n越界了,请重新如入!

");

  return0;//越界返回数字0

  }

  return1;//没有越界返回1

  }

  //*********************************************************************//

  boolIsHasChess()//检查当前位置是否已经有棋子了//检查是否越界

篇三:

井字棋课程设计报告

  软件工程课程设计报告

  题目:

井字棋游戏班级:

XX软件工程

  二○一四年十二月一日

  课程设计题目说明书

  第一章可行性研究

  1.1引言

  1.1.1可行性研究目的

  在课程设计项目中,井字棋游戏设计作为初学者的我们来说,是个比较适合和有研究意义的题目。

“井字棋”游戏(又叫“三子棋”),或是一字棋,是一款十分经典的益智小游戏,想必很多玩家都有玩过。

“井字棋”的棋盘很简单,是一个3×3的格子,很像中国文字中的“井”字,所以得名“井字棋”。

“井字棋”游戏的规则与“五子棋”十分类似,“五子棋”的规则是一方首先五子连成一线就胜利;“井字棋”是一方首先三子连成一线就胜利。

虽然这只是个很简单的小游戏,但作为初学者的我们认识项目设计的技巧与结构及其概念的理解,封装性、继承派生、多肽的理解及实现,是比较好的课题。

对我们以后的大型程序的设计奠定了基础。

所以作为我们这次的课程设计项目来说,我们认为是个很好的、有可研究性的设计项目。

  1.1.2背景(说明井字棋设计背景,开发目的等)

  对于21世纪的人们来说,游戏日益成为我们生活中必不可少的休闲娱乐工具。

为了满足人们的需要,现在越来越多的人们把游戏作为一种商品对待,就比如中国,像盛大、网易、滕讯等大型的游戏开发公司更把游戏的研究看作是一棵摇钱树,所以游戏程序设计人员在未来是不可多得的人才。

对于学软件工程的我们来说,一个优秀的程序员也许是我们学习的优秀目标,所以在出始阶段我们就注重项目设计的理念,而且喜欢游戏的我们更希望自己在将来能够做出一个自己很满意且适合市场的游戏来,所以我们这次以这个为题目就是想熟悉游戏编程的最基础的设计思想和实现手段的了解,为我们以后打下基础。

虽然井字棋是个很简单的小游戏,基本上人们都不玩了,但是作为一种我们的设计项目,我们都觉得是个很好的且适合的项目。

  1.2可行性研究的前提

  1.2.1要求(说明井字棋的预期要求)

  功能:

屏幕输出棋盘和棋子(可用特殊符号代替);

  实现:

用户与电脑下棋(可选)功能和修改。

难点:

判断输赢的算法及简单的人工智能实现。

  1.2.2目标

  首先:

能做出棋盘的基本样式。

  最后:

能实现玩家与电脑的对弈,最好能做到电脑的智能化。

  1.2.3评价尺度

  第一:

实现电脑的智能化;第二:

做到界面美观易懂;第三:

达到娱乐的最低水平。

  第二章需求分析

  2.1任务概述

  该软件的设计主要是实现简单的三字棋,能做到玩家与玩家之间的对弈或者玩家与电脑之间的对弈,可考虑怎样实现电脑的智能化。

其次,从程序的设计过程中理解实现程序的方法和理念,学会怎么样做到面向对象设计,理解面向对象的概念及结构的封装性和实用性,能为以后的设计奠定一些良好的基础。

  2.2对性能的规定

  此节说明软件的性能要求:

  精度:

本程序中按照系统给出的提示,输入数字,实现程序的功能。

应该注意,

  输入的一定只能是数字,若输入字母或其他,则出错。

  时间特性:

由于本程序并不是很庞大,故响应时间短,显示结果迅速。

故障处理要求:

只有在非法输入是,出现死循环,此时应该退出程序,重新输入。

运行环境规定运行的软件环境:

windows7、windowsXP、

  运行该软件所需要的硬设备:

PC机一台。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1