java五子棋课程设计

java五子棋课程设计
java五子棋课程设计

目录

1绪论 (1)

1.1课程设计意义 (1)

1.2课设目的 (1)

1.3课设要求 (1)

2网络五子棋介绍 (2)

2.1网络五子棋介绍 (2)

2.2游戏玩法 (2)

3系统整体设计 (3)

3.1整体设计 (3)

3.2系统流程图 (4)

4原理分析 (5)

4.1服务器和客户端通信机制 (5)

4.2多线程机制 (7)

5服务器的设计与实现 (8)

5.1服务器监听 (8)

5.2传递信息 (9)

6客户端设计与实现 (10)

6.1客户端界面设计 (11)

6.1.1GUI图形界面设计 (12)

6.1.2注册监听者 (13)

6.2连接服务器 (14)

6.3传递信息 (14)

6.4棋盘数据结构 (15)

6.5判断输赢算法 (16)

6.6背景音乐 (17)

7设计实现 (18)

8总结 (20)

谢辞 (21)

参考文献 (21)

华东交通大学课程设计

1绪论

1.1课程设计意义

五子棋是起源于中国古代的传统黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

经过一个学期的学习,使我对Java有了一定的了解。但要深入理解Java 语言,单靠上课是不够的。必须通过课程设计,设计一个比较大的程序,才能更深一步地理解Java语言。在这次课程中,我选择了网络五子棋作为课题。编写网络五子棋游戏要利用到Socket网络编程技术和多线程。通过这次课程设计,熟悉Java的GUI图形界面设计,网络Socket 编程和多线程编程。

1.2课设目的

通过课程设计,使学生理论联系实际,在程序设计实践中进一步了解JA V A程序设计方法掌握类和对象的基本编程方法,熟悉GUI图形界面编程技术,初步了解Socket编程方法。

1.3课设要求

通过课程设计完成一个网络五子棋游戏。由服务器和客户端组成。在Internet中不同用户使用客户端通过服务器与其它玩家连接。进行五子棋网络对战或聊天。

程序中要实现GUI图形界面的棋盘、黑子、白子功能,设计棋局存储数据结构, 实现开始、重来、退出等基本功能, 实现输赢自动判别算法, 实现网络对战功能, 背景音乐播放功能等。

1

网络五子棋游戏

2网络五子棋介绍

2.1网络五子棋介绍

五子棋是起源于中国古代的传统黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源远流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。

网络五子棋是一般五子棋的网络版,没有加入人机对战功能。本软件使两个不同计算机的使用者通过一定的网络连接,达到两人对战的功能。首先运行服务器监听客户端连接请求。运行客户端与服务器相连,若连接成功,则进入游戏。选择房间,一个房间最多两个人,人满后,双方可以开始游戏。

2.2游戏玩法

网络五子棋规则:棋盘采用15条横线×15条坚线组成交叉的每个点都可以放棋。

本游戏至少需要二个客户端才能进行游戏。客户端与服务器连接成功后,进入游戏大厅(房间号为0),选择一个大于0的房间号,如果该房间未满,即小于两个人,则可进入。点“游戏开始”,处于等待状态。如果对方也点击了“游戏开始”。双方就可以在网上进行对战了。在对战的同时还可以聊天,可以在同一房间内私聊,也可以发送消息给所有在线的用户。

游戏分黑白两方,每局由规定黑方先行。黑方玩家移动鼠标在棋盘中点击行棋。当黑方行棋完毕,转由白方行棋。同色棋子在棋盘上形成横、竖、斜形成“五子相连”则获胜。如果弃权,则判为输。

1 2

华东交通大学课程设计

3

3 系统整体设计

3.1 整体设计

网络五子棋是采用网络协议为TCP/IP 的网上对弈游戏,运用“客户端-服务器“(c/s)网络架构模式。实现用户通过Internt 连接在任何地方与不同玩家进行对战。服务器可以创建任意多局游戏。

通过使用多线程和网络套接字SOCKET 来实现游戏之间的通讯,它是基于点对点的通讯。开始让服务器初始化建立服务器套接字SOCKET ,基于某个端口PORT ,服务器始终处于监听状态。客户端是动作的发起者,何时发出申请由客户端决定。客户端向服务器发出申请,服务器给予响应。打开客户端套接字SOCKET ,连接到服务器端的地址ADDRESS 和端口PORT 。连接建立后,创建一个SOCKET 实例,并开始一个线程,监听该客户端请求。服务器继续监听其它用户的连接。服务器通过数据输入流从客户端接收信息,并且通过数据输出流把相应的信息发送给客户端。客户端发送请求和响应接收到的各种信息。

在服务器和客户端之间传递的消息格式是采用“[消息类别]+内容“组成的,服务器和客户端在传递消息的过程,根据消息的类别来进行相关的操作。比如要发送聊天信息,则在客户端发送的过程中,自动加上[MSG]在要发送的消息前面,服务器接收到客户端发来的消息,用startsWith()的方法来读取消息头部,如果等于”[MSG]“,进行一步判定是为群聊还是私聊,分别调用不同的方法向客户端发送聊天内容。

图3-1

网络五子棋游戏

1

4 3.2 系统流程图

服务器流程图:图1-

2

图3-2

客户端流程图:图3-

3

图3-3

华东交通大学课程设计

4原理分析

4.1服务器和客户端通信机制

Socket是面向客户/服务器模型设计的,网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket 通常用来实现客户方和服务方的连接。客户程序可以向Socket写请求,服务器将处理此请求,然后通过Socket将结果返回给用户。

在java中使用套接字相当简单,Java API为处理套接字的通信提供了一个类https://www.360docs.net/doc/e213636450.html,.Socket。使得编写网络应用程序相对容易。JA V A支持流套接字(stream socket)和数据报套接字(datagram socket)。流套接字使用TCP (Transmission Control Protocol,传输控制协议)进行数据传输,而数据报套接字使用UDP(User Datagram Protocol,用户数据报协议)。

服务器主机

Socket通信

图4-1

在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的

5

网络五子棋游戏

getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。

客户端启动以后,与服务器连接,服务器会启动一个线程来与客户进行文字交流。

要完成这个工作,需要完成三个部分的工作:

Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象。

ServerSocket server=new ServerSocket(8888);

这条语句创建了一个服务器对象,这个服务器使用8888号端口。当一个客户端程序建立一个Socket连接,所连接的端口号为8888时,服务器对象server便响应这个连接,并且server.accept()方法会创建一个Socket对象。服务器端便可以利用这个Socket对象与客户进行通讯。

Socket socket=server.accept();

进而得到输入流和输出流,并进行封装。

reader=newBufferedReader(newInputStreamReader (socket.getInputStream())); writer = new PrintWriter(socket.getOutputStream(), true);

随后,就可以使用reader.readLine()方法得到客户端的输入,也可以使用writer.println()方法向客户端发送数据。从而可以根据程序的需要对客户端的不同请求进行回应。

在所有通讯结束以后应该关闭这两个数据流,关闭的顺序是先关闭输出流,再关闭输入流,即使用

reader.close();

writer.close();

相比服务器端,客户端要简单一些,客户端只需用服务器所在机器的ip 以及服务器的端口作为参数创建一个Socket对象。得到这个对象后,就可以用"建立服务器"部分介绍的方法实现数据的输入和输出。

socket=new Socket("127.0.0.1", 8888);

reader=newBufferedReader(new InputStreamReader(socket.getInputStream())); writer=new PrintWriter(socket.getOutputStream(), true);

以上的程序代码建立了一个socket对象,这个对象连接到ip地址为127.0.0.1(本机IP地址,为了验证方便)的主机、端口为8888的服务器对象。并且建立了输入流和输出流,分别对应服务器的输出和客户端的写入。

1 6

华东交通大学课程设计

4.2多线程机制

多线程机制是指单个程序可以运行多个不同的线程,执行不同的任务。因为线程只能在单个进程的作用域内活动,所以创建线程比创建进程要廉价得多,同一类线程共享代码和数据空间,每个线程有独立的运行桟和程序计数器(PC),线程切换的开销小。因此多线程编程在现代软件设计中在量采用。

创建新线程必须编写一个线程类,用Java编写多线程代码有两种方式

●直接继承Java的线程类Thread;

●实现Runnable接口

无论采用哪种方式均需要在程序中编写Run()方法,线程在运行时要完成的任务在该方法实现。Thread 类封装了线程的行为。继承Thread类须重写run()方法实现各自的任务。程序中不要直接调用线程的run()方法,而是调用start()方法启动线程,让其进入可调度的状态,线程获得调度时将自动执行run()方法。

由于Java的单重继承的限制,有些类必须继承其它个类时又要实现线程的特性。这时可通过实现Runnable接口的方式来满足两方面的要求。Runnable 接口只有一个方法run(),它就是线程运行时要执行的方法,只要将具体代码写入其中即可。线程在调度时将自动调用Runnable 接口对象的run方法。

多线程是Java的一个特点,多线程可以使程序反应更快、交互性更强,并能提高执行效率。在网络五子中如果服务器是单线程的,则只能与一个客户端相连,就失去了网络对战的意义了。所以应该采用多线程方式。当服务器与一个客户端建立连接,就开启一个线程与之相连,同时监听其它用户的连接。

7

网络五子棋游戏

5服务器的设计与实现

网络五子棋游戏服务器端主要由以下几部分组成:图5-1

图5-1

网络五子棋游戏服务器端主要有三个类:Server类、five_ Thread类(线程类)和BManager类(消息广播者)。服务器端主要通过建立流连接来连接客户端。服务器建立与一个客户端连接,就开始一个线程,并同时监听其它客户端的连接。服务器接收一客户端的信息,接收信息后按照此客户端的要求将信息发送到相应的客户端,端起到了中介服务器的作用。为了更清楚地了解客户端的登陆情况,将服务器设计成图形界面。创建成一个可以显示游戏信息的框架。在框架中创建一个包含文本区的滚动窗格,并在文本区显示游戏信息。

图5-2

5.1服务器监听

首先创建一个服务器对象,并把它附加到8888号端口上,服务通过这

1 8

华东交通大学课程设计

个端口来监听客户端的连接请求。通过服务器对象的accept方法来创建一个Socket对象并使其与客户机连接,就开启一个线程处理客户之间数据,同时继续监听其它客户端的连接请求。并将线程添加至BManager对象bMan中。ServerSocket server=new ServerSocket(8888);

Socket socket=server.accept();

five_Thread thread=new five_Thread(socket);//建立一线程

thread.start();//启动线程

bMan.add(thread);//线程添加至BManager对象

5.2传递信息

当于客户端建立连接后,就建立输入输出流,由于消息的发送和接收。reader=newBufferedReader(newInputStreamReader (socket.getInputStream())); writer = new PrintWriter(socket.getOutputStream(), true);

five_Thread对象不仅可以获取套接字、输入输出流,而且它还提供了有关客户机的消息。例如客户机的姓名、房间号、游戏开始与否等。这是因为我们需要确定消息的来源及主要在某个房间传播的消息。并且,消息广播者也需要参照线程对象的房间号,以便将消息发送至某个房间中。

BManager类继承了Vector类,它的元素为five_ Thread线程对象,这样可以更容易用BManager 的对象来管理线程对象,如添加、删除、返回线程对象。BManager可以自由地参照five_Thread对象的房间号和玩家的名字,这样能向指定的房间发送消息和用户名字。需要比较Bmanager各元素的房间号和给定的房间号,若两者相同,则向此房间发送消息。

服务器和客户端之间的交流主要是相同的房间号之间的用户进行。如发送聊天消息,棋子信息,赢输消息的传送。

sendToAll(String msg)方法向所有用户发送消息,主要是发送群聊消息。因为消息的发送主要在相同的房间号中时行,要发送群聊消息,即所有房间的用户都能招收到。在输入聊天信息前加‘a’。表示向所有人发送。

SendToRoom(five_Thread thread, String msg)方法用于向指定的房间(roomnum)发送消息(msg)。房间内的两个用户都能接收到消息。主要用于发送发私聊信息。

sendTothreadhers(five_Thread thread, String msg)方法用于向与消息发送者处于同一房间的用户发送各种命令。比如发送在1号房间的一个用户发来“[WIN]“,服务器向1号房间的另一个用户发送[[LOSE]。实现原理:使用for循环检查元素(线程)的房间号。用getRoomNumber()得到发送信息的线程的房间号,当房间号相等时,则调用sendTo(i, msg)方法向第i个房间发送

9

网络五子棋游戏

1

10 消息。但并不向thread 连接的客户机发送消息。

服务器在five_Thread 类中重写run()方法,由于处理在与客户端连接过程中的数据传输,处理和控制。消息传递格式“[消息类别]+内容“。

“[ROOM]2“表示客户端请求进入第二号房间。服务器判断2号房间是否为满,如果不为满,则向客户端发送“[ROOM]2”,表示可以进入,并发送ROOM2中的其它用户名字。如果人数已满,则发送[FULL]。表示房间已满,无法进入。

“[NAME]“表示进入游戏大厅的用户名字。

“[START]“表示客户端要求开始游戏,如果对方也要求游戏,则游戏开始。服务器发送[COLOR]WRITE 和[COLOR]BLACK 表示棋子颜色分别给两个客户端。

“[DROPGAME]”表示放弃正在进行中的游戏。服务器发送“[DROPGAME]“给相同房间中的另一用户。

6 客户端设计与实现

客户端负责与用户之间的交互。包括棋盘类OmokBoard 类和Client 类。OmokBoard 类继承了JPanel 类,它主要用于棋盘的绘制和监听鼠标事件,获得棋子坐标和绘制棋子。它必须拥有输出流,用以向对手传递棋手的下棋信息。主要的方法有:

putOpponent ()在客户端显示对方棋子,保持双方棋子的一致性。

check()判断一方向上同色棋子个数。

drawStones()绘制棋子。

drawBoard()调用不同的方法,分析实现棋盘、棋子、提示信息的显示。 isRunning()标记游戏运行状态。

reset()清空棋盘,在游戏结果后运行。

Client 类,继承JFrame 类和实现Runnable 接口。主要由于界面初始化和注册事件监听者。主要方法:

Run()方法覆盖Runnable 接口里的run ()方法,用以对游戏过程中的数据传输,处理,控制。

actionPerformed(ActionEvent ae)实现点击菜单、按钮、文本框回车事件的具体代码。

Connect()与服务器连接。

endgame()结束游戏。

playersInfo()显示用户位置信息,是在游戏大厅中,还是在房间里。

goToWaitRoom()从房间里退出,进入游戏大厅。

华东交通大学课程设计

11 网络五子棋客户端主要由以下几部分组成:图6-1

图6-1

6.1 客户端界面设计

图6-2

网络五子棋游戏

1

12 6.1.1 GUI 图形界面设计

五子棋客户端界面本软件的的客户端的界面如图6-2所示,主要应用SWING 的组件来实现。界面由菜单、按钮、文本框、各种对话框、棋盘和黑白棋子等组成。

客户端中的按钮、文本框、标签等GUI 部件都是布置在面板JPanel 上的, 其中还包括将一块面板入在另一块面板中。这样能实现比较复杂的布局。多个不同的GUI 部件放在面板上时,还要设置它们的布局方式。这里采用了网络布局(GridLayout)和方位布局(BorderLayout)。最后将各个面板JPanel 添加到窗体JFrame 中。

菜单包括游戏、音乐、和帮助菜单项。首先创建一个菜单条(MenuBar) jmb , 然后创建不同的菜单项(Menu)加入到菜单条中。

JMenu sound = new JMenu("音乐");

jmb.add(sound);

最后创建菜单子项(MenuItem)加入菜单项,比如给“音乐”菜单项添加“播放”菜单子项:

JMenuItem play = new JMenuItem("播放");

Sound.add(play);

棋盘的绘制。五子棋盘(OmokBoard 类),五子棋盘继承了JPanel ,它内嵌于框架窗口中棋盘的大小采用15*15个方格。每个交叉点处可放置棋子。 private void drawLine(){

gbuff.setColor(Color.BLACK);

for(int i=1; i<=size;i++) {

gbuff.drawLine(cell, i*cell, cell*size, i*cell);

gbuff.drawLine(i*cell, cell, i*cell , cell*size);

}

}

当一个用户放下一个棋子后,同一房间里的两个用户的棋盘都要重画,以显示自己和对方下的棋子等信息。

棋子的绘制。用白色绘制一个圆形的边框,将填充黑色,这样就画好了一个黑色棋。位置要根据获得的鼠标点击的坐标和棋盘的大小来定。 private void drawBlack(int x, int y)//绘制黑棋

{

Graphics2D gbuff=(Graphics2D)this.gbuff;

gbuff.setColor(Color.black);

gbuff.fillOval(x*cell-cell/2, y*cell-cell/2, cell, cell);

gbuff.setColor(Color.red);

华东交通大学课程设计

gbuff.drawOval(x*cell-cell/2, y*cell-cell/2, cell, cell);//边框

}

6.1.2注册监听者

图形用户界面的每个可能产生事件的组件称为事件源, 希望事件源上发生的事件被程序处理, 就要把事件源注册给能够处理该事件源上事件的监听者。

图6-3

在这里按钮,菜单,和发送消息的文本框都是事件源。要想按钮或菜单发生事件时,程序能处理,必须注册监听者。按钮动作事件ActionEvent的监听者接口为ActionListener,给按钮注册监听者的方法为addActionListener()。

sendBox.addActionListener(this);//文本框按回车键

enterButton.addActionListener(this);

exitButton.addActionListener(this);

在actionPerformed(ActionEvent ae)中编写上体的事件处理代码。在发生事件时事件源将给其注册的所有监听者对象的发送消息,实际上就是调用监听者对象的actionPerformed()方法,从而完成事件的处理。通过getSource()方法:用来获取事件源对象。处理不同的事件。如处理单击“音乐播放”菜单和“游戏开始”引起的事件的actionPerfrmed()方法。

public void actionPerformed(ActionEvent ae) //播放音乐

{ if(ae.getSource()==play){

Object selection[] = {"fi.MID","five.mid"};

Object set = JOptionPane.showInputDialog(null,

"选择音乐...","播放...",

JOptionPane.QUESTION_MESSAGE,null,selection,selecton[0]);

13

网络五子棋游戏

1

14 music=new Sound(set.toString());

music.play();

}

else if(ae.getSource()==startButton){

try{ writer.println("[START]");//发送开始信息

infoView.setText("等待对方决定.");

startButton.setEnabled(false);

}catch(Exception e){}

}

进行五子棋游戏的一个重要的内容是获取鼠标点击时在棋盘中的坐标,即落下棋子的位置。

addMouseListener(new MouseAdapter(){

public void mousePressed(MouseEvent me){

if(!enable)return;//是否轮到下棋

int x=(int)Math.round(me.getX()/(double)cell);//得到鼠标坐标

int y=(int)Math.round(me.getY()/(double)cell);

//坐标要求不超过棋盘大小,在坐标上不存在棋子

if(x==0 || y==0 || x==size+1 || y==size+1)return;

if(map[x][y]==BLACK || map[x][y]==WHITE)return;

writer.println("[STONE]"+x+" "+y);//向服务器发送棋子信息

}

6.2 连接服务器

客户端连接服务器,首先用服务器所在机器的ip 以及服务器的端口作为参数创建一个Socket 对象。客户端调用connect()方法进行连接。

Socket socket=new Socket("127.0.0.1", 8888);

这里以本机地址127.0.0.1为IP 地址,是为了方便服务器和客户端运行在同一台机器上做实验。客户端一开始运行,便连接IP127.0.0.1主机的8888号端口如果连接成功,则在TextArea 对象msgViewk 中显示成功消息。否则显示连接错误的消息。

6.3 传递信息

客户端之间的信息传递,比如发送开始游戏,聊天都要通过先经过服务器发送。服务器接收到客户端发送的各种消息,识别不同消息的类别,采用

华东交通大学课程设计

不同的方法进行处理。

当建立与服务器的连接后,客户端通过数据输出流发送相应的请求给服务器,并且通过数据输入流从服务器端接收信息。客户端通过开启一个线程,处理与服务器之间的数据。

reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); writer=new PrintWriter(socket.getOutputStream(), true);

new Thread(this).start();//开始一个将调用这个runnable的run()方法的线程Java运行系统调用这个方法run()来执行线程。在Client类中,继承了JFrame 类,由于Java的单继承性,Client类就不能再继承Thread,但可以实现runnable 接口,通过覆盖Runnable接口里的run ()方法,用以对游戏过程中的数据传输,处理,控制。

客户端与服务器之间传递的信息,都是由“[消息种类]+内容“组成的,服务器接收到来客户端的消息,分析”[消息种类]“中的内容,进行相关的操作。下面对各种消息的种类作一个介绍。

[NAME]当用户在客户登陆时,发送给服务器,用于显示登陆用户名字。[ROOM]当用户登陆上时,[ROOM]号为0,记为“游戏大厅”,选择房间的用户在“游戏大厅“,房间号为大于0的整数,一个房间最多容纳2人,即对战的双方。当服务器端接收到查看[ROOM]房间号人数是否为满。不为满,则发送”[ROOM]+n”,给客户端,表示可以进入。否则发送“[FULL]”。[PLAYERS]在客户端显示相同房间用户列表。

[DISCONNECT]表示对方断线。

[COLOR]得到棋子颜色。[COLOR]BLACK表示黑棋。

[WIN]表示获胜。

[LOSE]表示失败。

[EXIT]表示对方离开房间。

[ENTER]显示相同房间中登陆的用户。

[STONE]表示对方下棋棋子的坐标。

[MSG]表示聊天的信息,只在相同的房间内可见。如果要想让所有的登陆的用户都能收到聊天信息,则消息种类为”[MSG]a”

6.4棋盘数据结构

棋盘设置成有15*15个方格。定义了一个二维数组Map[][]用于保存棋子在棋盘中的位置。在程序中用常数1表BLACK(黑棋),用-1表示WRITE(白棋),用0表示在此位置上无棋子。如在(3,3)位置上有一个黑棋。则Map[3][3]的值为1。

public static final int BLACK=1, WHITE=-1;//颜色标识值

15

网络五子棋游戏

1

16 private int[][] map;//Map 是一个二元数组,用于保存棋子的位置

6.5 判断输赢算法

输赢的判断是网络五子棋游戏中一个很重要的部分。当双方每放下一个棋子的时候,程序都要进行判断是否已经产生了输赢。如果是,则停止游戏,并发送结果给服务器,服务器再发送结果给对方。横,竖或者对角线方向上拥有五颗同样的棋子时,即为胜利。

五子相连判断

当在棋盘中放入一个棋子时,比如白色。程序要计算它左边连在一起的白色棋子的个数,然后计算右边与它相连在一起的白色棋子的个数。再将两数相加,如果为四,与自己加起来刚好为五。则白棋获胜。用同样的方法在垂直和对角线方向进行判断同色棋子个数。如果获胜,则客户端发送[WIN]给服务器,否则由对方下棋,并重复进行相同的运算。

count()方法用来查找并计算连在一起的棋子的个数。P 为基准坐标,dx 、dy 分别为表示横向于竖向的变量。col 代表棋子颜色。弱dx 为-1,dy 为0,则计算左边连续棋子的个数;若dx 为1,dy 为1,则计算左下到右上连续棋子的个数。dx 与dy 只取-1、0、1三个值之一。下面是count()方法的代码。 private int count(Point p, int dx, int dy, int col)

{

int i=0;

for(; map[p.x+(i+1)*dx][p.y+(i+1)*dy]==col ;i++);

return i;

}

用check()方法调用count()方法,分别在横、竖和对角线方向上计算相连同色棋子的个数。

private boolean check(Point p, int col)

{

if(count(p, 1, 0, col)+count(p, -1, 0, col)==4)//横向检查

华东交通大学课程设计

return true;

if(count(p, 0, 1, col)+count(p, 0, -1, col)==4)//竖向检查

return true;

if(count(p, -1, -1, col)+count(p, 1, 1, col)==4)//对角线方向检查

return true;

if(count(p, 1, -1, col)+count(p, -1, 1, col)==4)//对角线方向检查

return true;

return false;

}

6.6背景音乐

图6-4

通过下拉框,选择要播放的音乐,点击确定开始播放。停止播放,在菜单栏中单击停止播放。如图6-4所示。

播放背景音乐通过Sound类实现。首先要获得播放文件的URL地址具体过程如下:

urlLoader=(URLClassLoader)this.getClass().getClassLoader();

url=urlLoader.findResource("audio/"+soundfile);//当前目录audio下

再据url地址获得一个用于播放的音频的AudioClip对象

AudioClip soundData=ap.newAudioClip(url);

通过soundData的play()和stop()方法就可以实现音乐的播放和停止。

17

网络五子棋游戏

1

18 7 设计实现

首先运行服务器

图7-1

运行两个客户端,以便进行对战。客户端的连接的IP 为127.0.0.1。两个用户分别命名为feng 和tang 。进行游戏大厅后,输入房间号1,进入1号房间。点击“开始游戏”进行游戏。

图7-2

华东交通大学课程设计

19

图7-3

当游戏一方赢时,显示提示信息。图7-4所示。

图7-4

同色棋子成“五子相连”为胜,下面黑棋胜。图7-5所示

图7-5

当游戏进行时,一方弃权,则按输处理。另一方获胜。如图:图

7-

6

图7-6

五子棋游戏的设计与实现毕业设计论文

毕业论文(设计)题目五子棋游戏的设计与实现

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

五子棋报告-java

XXXX大学 XX学院 课程设计报告 课程名称:面向对象程序设计 题目名称:五子棋游戏设计 学生姓名: 专业班级: 指导教师:任晓强

一、课程设计目的与任务(四号、宋体、加黑、顶格) (1)掌握Java编程、面向对象的基础知识。 (2)较熟练地编写Java应用程序Application。 (3)了解Java的常用标准类库、编程技巧、异常处理。 (4)联系已学过的内容,巩固所学的理论,增强独立工作能力。(5)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (6)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。 二、课程设计内容 1本设计题目的主要内容 设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择落子的先后顺序 2.重置棋盘 3.刷新重新开始 4.退出提示 并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。 最后判断某一方是否为五子连珠。 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负); 2 设计思想与程序构架

程序流程图 程序的功能分配 a. 棋盘的绘制 public void draw_qipan(Graphics G) 添加按钮 Button b1=new Button("开始"); Button b2=new Button("重置游戏"); Label lblWin=new Label(" "); Checkbox ckbHB[]=new Checkbox[3]; Button exist = new Button("退出"); public void init(){ ckbHB[0]=new Checkbox("执白",ckgHB,false); ckbHB[1]=new Checkbox("执黑",ckgHB,false); ckbHB[2]=new Checkbox("观看",ckgHB, false); } c. 鼠标棋子的触发事件 public void mouseClicked(MouseEvent e) { Graphics g=getGraphics(); int x1,y1; x1=(); y1=(); if ()<20 || ()>300 || ()<20 || ()>300) {

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

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

福建农林大学计算机与信息学院计算机类课程设计报告结果评定

目录 1.设计目的 (4) 2.设计要求 (4) 3.设计方案 (4) 4.设计内容 (7) 4.1系统的主要结构和类结构 (7) 4.2 (2)五子棋类的结构 (7) 4.3⑶系统工作流程介绍.................................................... 7错误!未定义书签。⑷类的介绍. (8) 4.5 (5) 各个模块的介绍 (8) 4.6 (6)程序运行图示 (14) 5.总结 (16) 参考文献 (17)

(a)1.设计目的 (1)加深我对面向对象程序基本的理解和掌握。 (2)熟练掌握基本流程图的绘制。 (3)熟练visio的一些操作方法。 (4)能够在调试程序中快速发现并排除程序中的错误。 (5)提高面向对象程序语言解决实际中的问题的能力。 (b)2.设计要求 五子棋是玩家在游戏棋盘上逐个输入黑子或白子的坐标,因此游戏要求在DOS界面生成一个可供操作的棋盘。通过输入坐标完成对应落子情况,在输入过程中判断落子是否正确、是否有一方胜利等情况。编写代码可以在VC6.0下编译通过。游戏要能实现五子棋游戏的简单操作。程序中要体现面向对象思想。 (c)3.设计方案 (必须包含系统功能说明、用例图和类图) 一、用例图 落子 基于用户的用例图

步数用例图 系统用例图 1)输出棋盘界面菜单及图像2)开始进入控制3)黑白棋正确输入格式控制4)判断黑白输赢控制5)正确计数对羿步数及下一步所要走的棋盘界面

五子棋游戏设计与实现毕业设计

南京工程学院 毕业设计说明书(论文) 题目:五子棋游戏设计与实现

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

JAVA课程设计 五子棋

攀枝花学院课程业设计 五子棋 学生姓名: 学号: 所在院(系):数学院计算机学院专业:信息与计算科学指导教师:讲师 二〇一四年六月 攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书 注:任务书由指导教师填写。

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

目录 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功能需求 现在研究五子棋的算法已经很多了,比较经典的有递归、二叉树等,这也是很基础的,不同算法要求也不同,要求的能力也不同,每一种算法都是使得程序清晰明白,当五子相连就算胜利。故我们要理解中间过程。 每个代码实现功能也是不同的,有的是判断,有的是理解,有的是更好知道程序,程序在执行时我们可以知道哪里出错。哪里会有问题,修改便利。、在错误中学习,加强自己的基础知识与算法的能力。

五子棋(JAVA版)实习报告及原代码

实习报告 课程名称信息系统认知实习实习题目java五子棋专业 班级 学号 学生姓名 实习成绩 指导教师 2010年1月 前言

摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 1引言 1.1课题背景 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIR(Five in a Row 的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际 比赛棋。 Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的 实现成为了可能。 1.2本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡”、象棋的“将族”

五子棋课程设计报告

单 位 分院(系) 专 业 学 号 学生姓名 指导教师 完成日期 2011 年 05 月 日 摘 要 五子棋的历史:五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代 的传统黑白棋种之一.发展于日本,流行于欧美.容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性. 五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏.有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的.在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵.”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”.这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子.因而规则简单的五子棋也可能出自当时,并是用石子作棋子.亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来. 程序说明:本程序是一款棋类益智游戏程序,是用WIN-TC 编写在WINDOWS 系统下运行的娱乐游戏.本程序可以实现人人对战,操作采用键盘上的上下左右键控制棋子的上下左右移动,由空格键控制下棋,双方都可通过ESC 键终止游戏. 石家庄铁道大学课程设计 五子棋 课程设计题目

游戏开始后,红、白双方轮流下棋,程序会根据双方下棋的先后顺序自动显示不同颜色的棋子,提示当前下棋的棋手,任何一方由五子连成一线时,游戏结束,结束时会显示对战双方胜负情况. 关键词:五子棋游戏应用程序,C语言,图形函数 目录 第1章选题的意义2 意义2 设计思路 2 系统的基本要求3 第1章选题的意义 意义 通过游戏过程增加编程的兴趣,提高编程水平.编制该程序我对以下的知识点进行的巩固和掌握:1.数组元素为结构体的数组应用.2.全局变量应用.3.按键的处理.4.数组元素与蛇、食物的对应关系.5.图形方式等等.加深对所学知识的理解与掌握,增强自己对所学知识解决实际问题的能力,为以后的程序开发打下基础. 设计思路 棋盘设计为18×18格,初始状态光标在棋盘的中央,玩家1先走,轮流落子,当一方连成五子或下满棋盘时,游戏结束(连成五子的一方获胜,下满棋盘为和棋).当游戏一方胜利后显示胜利信息.从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别是0代表空格,1代表白棋,2代表黑棋.这样程序的主要工作是接收棋手按键操作,棋手用Up、Down、Left、Right控制光标移动,空格键表示落子.一旦接收到空格键,说明棋手落子,先判断是否是有效位置,也就是说已经有棋子的位置不能重叠

(完整版)五子棋本科毕业设计

第一章绪论 1.1开发背景: 游戏软件是当今世界发展最迅速,最有影响力,最有潜力与活力的领域之一?游戏软件深受广大青年人喜爱,而且在发达国家中老年人也有大部分喜欢游戏的,因此游戏软件在很大程度上给予绝大部分人精神上的娱乐?第二次世界大战以后,电子计算机技术得到了突飞猛进的发展?先是由晶体管代替了笨重的真空管,后来出现了集成电路和大规模集成电路,使电子子计算机一代一代实现更新,同时软件技术也发展迅速?在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力?这种“游戏”花样繁多,但其特点都是利用计算机软件事先设计好的“分析”?“判断”能力反过来与人较量?由于不断修改更新,使计算机的“智力”水平与人难分高低?到了90年代,游戏软件已经为世界各国的人使用,BLACKISLAND和Blizzard.这两个强大的游戏制作组起到了巨大的带动作用,还有中国的洛河工作室在国内也起到了巨大作用,他们让很多很多人喜欢上了游戏软件,打开了这个市场。如今游戏软件产业已经受到了广泛的关注,它年轻有潜力而且吸引人,让人们日益丰富的生活需求得以满足。 五子棋游戏更是吸引着不同年龄段的人群,无论男女老少都可以玩,都喜欢玩,而当前微型计算机已经是在广大人群中流行着,用电脑来下五子棋更是一种时尚。五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”李

五子棋java设计文档

安阳工学院 JA V A课程综合项目报告 项目题目:五子棋 专业班级:12网工专升本 学生姓名:阮营营 学生学号:201203060042 指导教师姓名:许研 2012年12月 安阳工学院计算机学院制

目录 一、系统目标 (2) 二、系统设计思路 (2) 三、系统详细设计 (2) 四、系统实现 (9) 五、系统设计总结 (12) 六、参考文献 (12)

一、系统目标 1、主要是介绍开发五子棋的整个过程,体现流程设计与类设计的基本方法,示范了数组的使用,使用了分支结构与循环结构的流程控制 2、通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应软件、开发系统软件等各项工作。 3、通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。 二、系统设计思路 1、获取棋盘设计一个11╳11围棋棋盘,由两玩家交替进行对战,并可以实现以下功能。五子棋的规则为: 2、下棋方法两人分别执黑白两色棋子。轮流在棋盘上选择一个无子的交叉点落子,无子的交叉点又被称为空点。 3、输赢判断每次下完一颗棋子,就通过程序从横、竖、斜各个方向扫描棋盘,如果在某个方向中,有同种颜色的棋子达到五连子,则此颜色的玩家为赢。如果没有相同颜色的棋子达到五连子,则继续游戏。 三、系统详细设计 3.1程序流程图

3.2创建棋盘类,绘制棋盘的样式 main方法创建了ChessFrame类的一个实例对象,并启动屏幕显示显示该实例对象。 public static void main(String argc[]) { myframe f = new myframe(); } 构造五子棋的主窗体: class myframe extends Frame implements WindowListener { mypanel panel; myframe() { setLayout(null); panel = new mypanel(); add(panel); panel.setBounds(0, 23, 360, 360);

jv五子棋毕业设计整套

1引言 随着计算机技术的不断发展,网络技术的普及范围越来越广,网络能够提供的服务多样、便捷,已经成为人们生产生活中不可缺少的重要组成部分。如今网络休闲游戏发展迅速,它凭借健康、方便、互动性强、益智等诸多优点,成为大部分现代人休闲娱乐的首选。 网络五子棋游戏是使用Java语言开发的一款游戏。它使用SOCKET建立连接,多线程处理数据,以及可嵌入网络浏览器的APPLET作为客户端,这些特点使这款游戏无论是服务器还是客户端的实现都相对容易。通过对该软件的编写,还可以巩固学生对以上各种知识的掌握和理解。

2 JAVA语言概述 2.1 JAVA简介 JAVA是Sun Microsystem公司开发的编程语言,是一个简单,面向对象,分布式,解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态的语言。 2.1.1 JAVA的基本特点 (1) 简单性 Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。 Java实现了自动的垃圾收集,简化了内存管理的工作。 (2) 面向对象 Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。 (3) 多线程 多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。 (4) 分布性 Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象。 (5) 体系结构中立 Java是一种网络语言,为使Java程序能在网络的任何地方运行,Java解释器生成与体系结构无关的字节码结构的文件格式。为了使Java的应用程序能不依赖于具体的系统,Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持Java的平台上。 (6) 安全性 用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。 2.1.2 Java中输入/输出流概念 过滤流DataInputStream 和DataOutputStream 除了分别作为FilterInputStream 和FilterOutputStream的子类外,还分别实现了接口DataInput 和DataOutput。接口DataInput 中定义的方法主要包括从流中读取基

五子棋-Java课程设计

《面向对象程序设计》 课程设计报告 实验时间:2010年10月26日 实验班级:********************** 实验报告总份(片)数: 1 份(片) 实验指导老师:***** ******* 设计小组 湖南省吉首市吉首大学 课程设计报告 简单的游戏——五子棋 小组成员(姓名、学号): **(组长)** ** ** ** ** 一、实验分工

二、开发环境(实验编译以及测试环境) 硬件环境: CPU:Intel 奔腾双核E5200 主频2.5GHz 内存:2G 软件环境: 操作系统:Windows 7 编程环境JDK7.0 开发工具:Eclipse SDK 三、使用环境(用户运行环境) 硬件环境: CPU主频在500MHZ以上,内存在128M以上 软件环境: JAVA运行环境+ Windows XP或Windows 2000 以上操作系统 目录 第一章总体设计.............................................................................................................................. 1 1.1设计的目的.......................................................................................................................... 1 1.2本系统的主要功能.............................................................................................................. 1 1.3系统包含的类及类之间的关系。...................................................................................... 1 1.4 Java源文件及其功能......................................................................................................... 2 1.5 项目构建思路..................................................................................................................... 2第二章模块功能介绍.................................................................................................................. 12 2.1主类Chess...................................................................................................................... 12

人工智能课程设计(五子棋)解读

《人工智能导论》课程报告 课题名称:五子棋 姓名: X X 学号:114304xxxx 课题负责人名(学号): X X114304xxxx 同组成员名单(学号、角色): x x1143041325 XXX1143041036 指导教师:张建州 评阅成绩: 评阅意见: 提交报告时间:2014年 1 月 9 日

五子棋 计算机科学与技术专业 学生XXX 指导老师张建州 [摘要]人类之所以不断在进步,是因为我们人类一直不断的在思考,五子棋游戏程序的开发符合人类进步也是促进人类进步的一大动力之一。五子棋游戏程序让人们方便快捷的可以下五子棋,让人们在何时都能通过下棋来提高逻辑思维能力,同时也培养儿童的兴趣以及爱好,让孩子更加聪明。 同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,玩上五子棋,这已经不是局限。五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。 关键词:五子棋进步思考

目录 《人工智能导论》课程报告 0 1 引言 (3) 1.1五子棋简介 (3) 1.2 五子棋游戏的发展与现状 (3) 2 研究问题描述 (4) 2.1 问题定义 (4) 2.2 可行性研究 (4) 2.3 需求分析 (5) 2.4 总体设计 (5) 2.5 详细设计 (6) 2.6编码和单元测试 (6) 3 人工智能技术 (6) 4 算法设计 (7) 4.1α-β剪枝算法 (7) 4.2极大极小树 (7) 4.3深度优先搜索(DFS) (8) 4.4静态估值函数 (9) 5 软件设计和实现 (9) 5.1 数据结构定义 (9) 5.2 程序流程图 (17) 6 性能测试 (18) 6.1 程序执行结果 (18) 7 总结 (21) 参考文献 (21)

(完整版)五子棋游戏的设计与实现毕业设计

毕业论文(设 计) 题目五子棋游戏的设计与实 现 所在院(系)数学与计算机科学学 院

专业班级信息与计算科学1101班 指导教师拓守恒 完成地点陕西理工学院 2015年5 月18日

五子棋游戏的设计与实现 作者:王勇 (陕理工学院数学与计算机科学学院信息与计算科学专业1101班,陕西汉中 723000) 指导教师:拓守恒 [摘要]五子棋是起源于我国古代的黑白棋种之一,是一种简单的娱乐性较强的大众游戏,深受广大玩家的喜爱,但同时作为比赛,五子棋游戏还有着深奥的技巧。 本系统的实现采用了C语言的模块化的程序设计方式,用Visual C++ 6.0软件来实现程序的编译运行。实现黑白两方分别落子,通过棋盘上方的棋盘动态信息提示,轮流落子,本系统中游戏的每一个功能在程序中都是一个相对独立的模块,比如,棋盘模块,棋子模块,选择游戏模式模块,悔棋模块等等在程序中都是独立的,但它们之间通过逻辑关系的链接又构成了一个可以使游戏正常运行的程序。 为实现游戏的双人对战模式和人机对战模式,并使得游戏尽量的简单化,本系统需要达成以下目标:设计一个简洁的游戏初始界面;制定合法规则,使游戏能公正的进行,并且可以断定胜;支持人机对战模式,可以是电脑通过人工智能和合法规则选出最优落子位置;可以悔棋,在玩家落子落错位置时,可按下悔棋键进行悔棋。 [关键词]五子棋,游戏设计,C语言,双人对战,人机对战,人工智能

Designer and implementation of gobang game Author: wangyong (Grade11,Class 1, Major in Information and computing science, Mathematics and computer science Dept. Tutor: Tuo shouheng Abstract:Gobang is one of the black and white kind of originated in ancient China, is a simple and entertaining stronger mass games, loved by the majority of players, but at the same time as the game, gobang game with profound skills. The implementation of this system method, using Visual C + + 6.0 software to realize the program compiler running. Implementation of black and white two parties move later, respectively, by the board at the top of the dynamic message board, take turns to move later, this game in the system each function in the program is a relatively independent modules, such as, the board module, pawn module, select game mode module, back module and so on in the program are independent, but the link through the logical relationship between them and form a can make the normal operation of the game program. In order to realize the double mode and man-machine game mode, and make the game as far as possible the simplification, the system needs to achieve the following goals: design a simple game of initial interface;the legal rules, can make the game fair, and you can call;support the man-machine

Java五子棋毕业设计论文

摘要 人工智能是一门正在迅速发展的新兴的,综合性很强的交叉科学。它与生物工程、空间技术一起被并列为二十一世界三大尖端技术。它的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作。目前各发达国家都把人工智能作为重点项目,列入本国的高科技发展计划当中,投入巨大的人力和物力。 计算机人机对弈也是其中之一。作为人智能研究的一个重要分支,计算机博弈是检验人工水平的一个重要方面。它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影响。 五子棋人机对弈是计算机博弈中的一种。研究其计算机算法,可以让我们看到人工智能的稚形,也有助于我们人脑的开发。五子棋是我国发明的,研究它可以让更多的外国人了解五子棋,这有助于我国优秀文化的推广。 关键词:人工智能,计算人机对弈,五子棋,算法

目录 摘要 (Ⅰ) 目录 (Ⅲ) 第一章绪论 (1) 第二章需求分析 (2) 2.1 业务需求 (2) 2.2 性能需求 (2) 2.3 系统平台需求 (2) 第三章五子棋相关基础 (4) 3.1 五子棋解释 (4) 3.2 五子棋的基本规则 (4) 3.3 五子棋的常用术语 (5) 第四章开发工具、环境及其技术 (7) 4.1 Java简介 (7) 4.2 Java编程环境 (9) 第五章程序设计思路与实现 (10) 5.1 程序设计思路 (10) 5.2 程序设计 (13) 结论 (33) 参考文献.................................................................................................................... 致谢............................................................................................................................ 附录............................................................................................................................

五子棋课程设计实验报告

西南交通大学 程序语言综合课程设计 五子棋游戏 课程《程序语言综合课程设计》 学院信息科学与技术学 专业软件工程 姓名 学号 20119050 日期 2016年月日

目录 第一章课程设计的目的和要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计的要求 (3) 1.3 课程设计的实验环境 (3) 第二章功能描述 (4) 第三章总体设计 (5) 3.1 功能模块设计 (5) 3.1.1 任务执行流程图 (5) 3.1.2 下棋函数流程图 (6) 3.2 数据结构设计 (7) 3.2.1 定义结构体 (7) 3.2.2 定义数组 (7) 3.2.3 全局变量 (7) 3.3 函数功能描述 (7) 第四章程序实现 (8) 4.1源码分析 (8) 4.2运行结果及界面介绍 (22) 第五章后记 (27)

第一章课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。 1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能 1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0

Java五子棋毕业设计论文

题目:JAVA五子棋对弈程序的设计与实现

目录 摘要 .................................................................... I Abstract ............................................................... II 1 引言 (1) 2五子棋对弈程序的可行性分析 (1) 2.1 五子棋系统设计思路 (1) 2.2 经济可行性分析 (1) 2.3技术上的可行性 (1) 2.4 管理上的可行性 (2) 3 JAVA五子棋对弈现的需求分析 (2) 3.1 用户需求分析 (2) 3.1.1 普通用户主要需要: (2) 3.1.2 系级管理员主要需要: (2) 3.1.3 系统用例图: (3) 3.2 数据字典的描述 (3) 3.2.1用户信息表的数据字典的描述: (3) 3.2.2用户每次游戏信息表的数据字典描述: (4) 3.2.3 用户每盘棋信息表的数据字典描述: (4) 3.2.4 用户每步棋信息表的数据字典描述: (4) 3.3五子棋对弈系统的数据流图 (4) 3.3.1 用户登录数据流图(DFD) (5) 3.3.2普通用户界面显示数据流图(DFD) (5) 3.3.3管理员用户界面显示数据流图(DFD) (6) 3.3.4用户棋局回放数据流图(DFD) (6) 4 JAVA五子棋对弈系统分析与设计 (7) 4.1 系统设计总体思想、目标 (7) 4.2 五子棋人机对弈系统的ER模型 (7) 4.3 JAVA五子棋对弈系统结构、功能设计 (9) 4.3.1 系统结构设计 (9) 4.3.2 系统功能模块设计 (10) 4.3.3设计思路 (11) 4.4 程序设计分析 (11) 4.5 类的设计 (12) 4.6五子棋对弈系统的数据库设计 (15) 4.6.1 系统用户表 (15) 4.6.2 用户棋局表 (16) 4.6.3 用户棋盘表 (16) 4.6.4 用户下棋信息表 (17) 5五子棋相关基础 (17) 5.1 五子棋相关解释 (17) 5.2 五子棋相关规则 (17) 5.3 五子棋常用术语 (18) 6 系统平台、计算模式及技术 (19)

JAVA五子棋程序设计课程设计

JAVA五子棋程序设计课程设计

计算机与信息工程系 《JAVA程序实训》设计 五子棋游戏 摘要: 计算机人机对弈作为人智能研究的一个重要分支,计算机博弈是检验人工水平的一个重要方面。它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影响。 五子棋人机对弈是计算机博弈中的一种。研究其计算机算法,能够让我们看到人工智能的稚形,也有助于我们人脑的开发。五子棋是中国创造的,研究它能够让更多的外国人了解五子棋,这有助于中国优秀文化的推广。 关键词:人工智能,计算人机对弈,五子棋,算法 , java 1.课程设计介绍 1.1课程设计目的 经过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、NetBeans等开发工具的运用,拓宽常见类库的应用。使我们经过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。本次课程设计每人一组,自行设计并实现共功能模块。

1.2课程设计任务 实现五子棋游戏,要求:使用图形用户界面,实现人人对战,人机对战。能够判断输赢,有“开始”按钮,当出现棋盘后,按此按钮进入对战状态。当有胜利者(垂直、水平、对角线连续5子),显示对话框,提示谁(黑还是白)胜利了。若当棋盘满了还无胜利者,显示平局对话框。有“悔棋”按钮,玩家能够点击悔棋,回到上一步。 1.3课程设计论文编写要求 (1)要按照书稿的规格打印与写课程设计论文; (2)论文包括目录、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等; (3)课程设计论文装订按学校的统一要求完成。 2.系统设计 2.1需求分析 2.1.1性能需求 一款小游戏的确立是建立在各种各样的需求上面的,这种需求往往来自于玩家的实际需求,其中玩家的实际需求最为重要.面对游戏拥有不同知识和理解层面的玩家,游戏制作人对玩家需求的理解程度,在很大程度上决定了此类游戏开发的成败.因此如何更好地的了解,分析,明确玩家需求,而且能够准确,清晰以文档的形式表示给游戏制作人,保证开发过程按照满足玩家需求为目的正确开发方向进行,是每游戏游戏制作人需要面正确问题。 作为五子棋的设计需要考虑到的最基本的需求莫过于人机对战与人人对战功能的实现,当然还有下棋过程中的下棋悔棋功能以及判断游戏的胜负等方面的要求。当然最好是要考虑到界面的友好性,作为一个娱乐软件,还应

java课程设计人机对弈五子棋

《Java程序设计》课程设计报告 学院:理学院 班级: 姓名: 学号: 指导教师: 课设时间: 2015-06-23 至2015-06-25 二O一五年六月二十五日

课程设计(论文)任务书 理学院信息与计算科学专业2012-2班 一、课程设计(论文)题目:人机对弈五子棋游戏 二、课程设计(论文)工作: 自2015 年6 月23 日起至2015 年6 月25日止 三、课程设计(论文) 地点: 5-205 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握软件开发的基本工作流程; (2)巩固JAVA程序设计课程所学的内容; (3)培养学生的计算机思维能力以及合作的精神; (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)研究课程设计任务,并进行系统需求分析; (2)对系统进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作;(3)实现各功能模块代码; (4)系统组装,测试、完善系统。 2)创新要求: 在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。3)课程设计论文编写要求

(1)要按照书稿的规格打印誊写课程设计论文 (2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结(3)论文装订按学校的统一要求完成 4)参考文献: (1)丁振凡,《JAVA语言程序设计》,清华大学出版社 (2)丁振凡,《JAVA语言程序设计实验指导与习题解答》,清华大学出版社 (3)https://www.360docs.net/doc/e213636450.html,/ 5)课程设计进度安排 内容天数地点 系统总体设计 1 实验室 软件设计及调试 1 实验室 答辩及撰写报告 1 实验室、图书馆 学生签名: 2015年6月25日 课程设计(论文)评审意见 (1)课程设计过程(20分):优()、良()、中()、一般()、差(); (2)是否完成调试,系统运行效果(30分):优()、良()、中()、一般()、差(); (3)回答问题(20分):优()、良()、中()、一般()、差();(4)课程设计报告(30分):优()、良()、中()、一般()、差(); (5)格式规范性及考勤是否降等级:是()、否() 评阅人:职称:教授 2015年 6月25日

相关文档
最新文档