文档库 最新最全的文档下载
当前位置:文档库 › 五子棋java课程设计

五子棋java课程设计

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

课程设计(论文)任务书

软件学院学院软件+电子商务专业二班

一、课程设计(论文)题目 java 课程设计《五子棋带聊天系统》

二、课程设计(论文)工作自 2010 年 12 月20 日起至2010 年12 月 24 日止。

三、课程设计(论文) 地点: 软件学院实训中心

四、课程设计(论文)内容要求:

1.本课程设计的目的

(1)掌握Java语言的程序设计方法;

(2)理论联系实际,进一步提高学生的软件开发技术;

(3)培养学生分析、解决问题的能力;

(4)提高学生实践论文撰写能力。

2.课程设计的任务及要求

1)课程设计任务:

实现一个简单的多用户五子棋的游戏程序,包括如下两个界面

设计要求:1、五子棋游戏室界面:用户可以选择对弈桌及角色(执黑、执

白、旁观);

2、游戏界面:有开始、退出、悔棋、判断胜负;发言及显示区;用户列

表区;棋盘绘制区;

3、使用Socket来完成服务端和客户端的通信;

4、使用多线程技术支持多用户操作;

5、增强功能:支持用户注册、添加和删除好友、战绩显示、发送消息、

接受消息、多人聊天等功能;使用数据库保存用户信息。

2)创新要求:

以上任务还未完善,悔棋、用户列表区及增强功能板块未完善。今后,参考资料书,实现五子棋网络对战及数据库的利用。

3)课程设计论文编写要求

(1)课程设计任务及要求

(2)设计思路--工作原理、功能规划

(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。

(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,

巩固了哪些知识,有哪些提高。

(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)

(7)报告按规定排版打印,要求装订平整,否则要求返工;

(8)课设报告的装订顺序如下:封面---任务书---中文摘要---目录----正文---附录(代码及相关图片)

(9)严禁抄袭,如有发现,按不及格处理。

4)课程设计评分标准:

(1)学习态度:10分;

(2)系统设计:20分;

(3)编程调试:20分;

(4)回答问题:20分;

(5)论文撰写:30分。

5)参考文献:

(1)丁振凡. Java语言实用教程(第2版)[M]. 北京邮电大学出版社. 2008.1

(2)丁振凡. Java语言实用教程实验指导(第2版)[M]. 北京邮电大学出版社. 2008.1 (3)杨树林等. Java语言最新实用案例教程(第2版)[M]. 清华大学出版社. 2010.7 6)课程设计进度安排

1.准备阶段(4学时):选择设计题目、了解设计目的要求、查阅相关资料

2.程序模块设计分析阶段(4学时):程序总体设计、详细设计

3.代码编写调试阶段(8学时):程序模块代码编写、调试、测试

4.撰写论文阶段(4学时):总结课程设计任务和设计内容,撰写课程设计论文

学生签名:

2010 年12 月20 日

课程设计(论文)评审意见

(1)学习态度(10分):优()、良()、中()、一般()、差();(2)系统设计(20分):优()、良()、中()、一般()、差();(3)编程调试(20分):优()、良()、中()、一般()、差();(4)回答问题(20分):优()、良()、中()、一般()、差();(5)论文撰写(30分):优()、良()、中()、一般()、差();

评阅人:职称:讲师

2010 年12 月25 日

中文摘要

五子棋源于中国。我的这个棋盘是15×15棋盘,横行、竖行都有15个交点,在交点处黑白棋子对弈。在横,竖,斜四个方向若有一方连续超过5个则该方胜利。完成棋盘面板画棋盘,对鼠标注册监听扑捉下棋位,画上棋子。根据下棋位点,将棋子布局模拟成二位数组,对数组进行遍历,判断胜负。棋盘还附加了聊天功能,开启次程序后,便在ChatServer内申请账号,实现与其他户的群聊,采用了多线程技术和Socket实现通信。

目录

一、课程设计任务及要求 (1)

二、需求分析 (1)

2.1 棋盘板块 (1)

2.2 聊天板块 (1)

2.3 ChatSever (1)

2.4 编译环境 (1)

2.5 参考资料 (1)

三、设计思路 (1)

3.1 板块的显示 (1)

3.2 注册监听 (2)

3.3 ChatServer (2)

3.4 下棋 (2)

四、详细设计 (3)

4.1 WuZiQi类 (3)

4.2 ChatSever类 (4)

4.3多用户聊天 (5)

4.4 流程图 (6)

五、运行调试与分析讨论 (7)

六、设计体会与小结 (9)

七、参考文献 (10)

一、课程设计任务及要求

1、五子棋游戏室界面:用户可以选择对弈桌及角色(执黑、执白、旁观);

2、游戏界面:有开始、退出、悔棋、判断胜负;发言及显示区;用户列表

区;棋盘绘制区;

3、使用Socket来完成服务端和客户端的通信;

4、使用多线程技术支持多用户操作;

5、增强功能:支持用户注册、添加和删除好友、战绩显示、发送消息、接

受消息、多人聊天等功能;使用数据库保存用户信息。

二、需求分析

2.1 棋盘板块

画一个15×15的棋盘版面,及两个按钮组。初始化:开始、重置、

退出;角色选择:黑方、白方、旁观。

2.2 聊天板块

聊天信息显示区,聊天信息输入区。

2.3 ChatSever

模拟服务器:用于桥接不同用户,实现接收用户发出的信息,然后

将信息传递到每个用户的聊天窗口。

2.4 编译环境

Eclipse 实验室上机在宿舍编写

2.5 参考资料

Java 语言使用教程,百度文库资料(五子棋判断胜负算法)。

三、设计思路

3.1 板块的显示

画棋盘调用public void paint(Graphics g){QiPan(g);}方法

画一个15×15的棋盘面版。

初始化定义两个Panel P1、P2,在初始化板块将JButton 开始、重置,退出加入到P1,将黑方、白方、旁观加入到P2。

聊天板块在初始化时定义一个JTextArea 和一个JTextField 实现聊天功能

3.2 注册监听

对角色选择按钮注册ActionListener监听,设置用户的角色。定义黑子int类型 0,白子1。

对按钮开始、重置注册ActionListener监听,如果点击开始,用户进入下棋状态,有一方赢了,棋盘上则不能再点击棋子。点击重置,则开始新的一轮。

对鼠标注册mouseClicked监听,鼠标点击棋盘时获取下棋的位置。

对JTextField注册ActionListener,用户输入聊天信息后,通过Server 传递给其他用户,在对话框JTextArea内显示。

3.3 ChatServer

class ServerThread implements Runnable{ }类监听线程,监听是否有客户端法过信息来。

属性:

Vector threads 向量存储线程

Socket socket 服务端口

DataInputStream in 输入流

DataOutputStream out 输出流

int nid 用户ID

方法:

构造器public ServerThread(Socket socket,Vector threads)

实现信息的输入、输出

实现public void run()监听客户端是否发信息过来,当客户离开时向其他客户发信息,把客户端的信息发给其他客户。

服务器向客户端发信息public void write(String msg)

获取线程IDpublic int getID()

设置线程IDpublic void setID(int nid)

在Chatserver类内调用ServerThread 实现对所有来访客户监听,为来访者设置ID,若有离开用户,则在聊天板块广播。

3.4 下棋

用二维数组模拟棋盘chessbody[17][17],黑方下棋,则黑方所下棋位置的值等于旗子的颜色加一,白方类似。最后1代表下了黑棋,2表示下了白棋,0表示没下棋。

从横向、纵向、斜方向判断胜负。下完一步判断一次,有一个方向上同色棋子数超过5,则胜负已判断。

四、详细设计

4.1 WuZiQi类

属性: int color_Qizi=0; 黑子0 白子1

int ChessBody[][]=new int[17][17];

无棋子 0,黑棋 1,白棋 2;

int GameStart=0;

JButton start,exit,rest;

JButton check[]=new JButton[3];

String chess[]={"黑方","白方","旁观"};

方法:

获取下棋位点

public void mouseClicked(MouseEvent e){

//Graphics g=getGraphics();

int x,y;

x=e.getX();y=e.getY();//鼠标点击位置

if(x<45||y<45||x>495||y>495)

{return;}//在棋盘之外则不下

if(x%30>15)//获取下棋点的位置

{x+=30;}

if(y%30>15)

{y+=30;}

x=x/30*30; //x、y为棋子中心位置

y=y/30*30;

PlayQizi(x,y);//下棋 }

下棋点击后天上棋子,每一步完了后判断胜负,从四个方向上判断

胜负,并在棋盘中间显示哪方赢了!

public void PlayQizi(int x,int y){

if (GameStart==0) //判断游戏未开始

{ return; }

if (ChessBody[x/30][y/30]!=0)

{return;}

Graphics g=getGraphics();

if (color_Qizi==1)//判断黑子还是白子

{g.setColor(Color.black);

color_Qizi=0;

}

else {g.setColor(Color.white);

color_Qizi=1;

}

g.fillOval(x-12,y-12,24,24);

ChessBody[x/30][y/30]=color_Qizi+1;

/////判断输赢//////////

g.setColor(Color.magenta);

g.setFont(new Font("fhahf ",Font.BOLD,30));

if(GameWin横(x/30,y/30)){

g.drawString(GetQiziColor(color_Qizi)+"赢了!",200,200);

GameStart=0;

}

if(GameWin竖(x/30,y/30)){

g.drawString(GetQiziColor(color_Qizi)+"赢了!",200,200);

GameStart=0;

}

if(GameWin撇(x/30,y/30)){

g.drawString(GetQiziColor(color_Qizi)+"赢了!",200,200);

GameStart=0;}

if(GameWin捺(x/30,y/30)){

g.drawString(GetQiziColor(color_Qizi)+"赢了!",200,200);

GameStart=0;}}

4.2 ChatSever类

public void run(){

System.out.println ("Thread is running");

try{

//监听客户端是否发消息过来

while(true){

String receive = in.readUTF();

if(receive == null)

return;

//当某客户离开,给其它客户端发消息

if(receive.equals("leave")){

for(int i=0;i < threads.size();i++){

ServerThread st = (ServerThread)threads.elementAt(i);

st.write("***"+getID()+"leaving...***");

}

}else{

//把某客户端发过来的发送到所有客户端

for(int i=0;i < threads.size();i++){

ServerThread st = (ServerThread)threads.elementAt(i);

st.write("<"+getID()+">: "+receive);}

4.3多用户聊天

初始化网络,并连接到服务端

try {

//获得URL

URL url = this.getCodeBase();

InetAddress addr = InetAddress.getByName(url.getHost());

Socket socket;

System.out.println ("Server: "+addr+" "+url.getHost()+" "+url.getProtocol());//5555 为服务器端口

socket = new Socket(addr,5555);

//由本套接口获得输入,输出流

in = new DataInputStream(socket.getInputStream());

out = new DataOutputStream(socket.getOutputStream());

}catch (Exception ex) {ex.printStackTrace(); }

线程开始new Thread(this).start();

Run方法向服务器发送信息并接收信息

public void run() {

try {//监视服务器所发送的信息

while(true) {

String receive = in.readUTF();

if(receive!=null){

txtDisplay.append(receive + "\n");

//将光标移动到最后一个以实现滚动条的自动置底txtDisplay.setCaretPosition(txtDisplay.getText().length());

} }

}catch (Exception ex) {

txtDisplay.append("Network problem or Server down");

txtInput.setVisible(false);}

}

public void stop() {

try {

out.writeUTF("leave");

}catch(Exception ex){}}

4.4 流程图

图 4—1 网络通信

用户与服务器间的通信是双向的,用户将信息传递给Server,Server 再将信息传递给每个用户。

图 4—2 WuZiQi 类的方法

棋盘继承JApplet 类,注册监听,实现Init()、Run()、Paint()方法、注册监听。画棋盘,用二维数组模拟棋盘下子情况。对棋盘棋子的获取,判断胜负。与Server 连接,监听,获取来自服务器的信息。

用户1

用户2

用户3

用户5

用户3

Server

Init()方法 Paint()方法 Run()方法 注册监听

WuZiQi 类

五、运行调试与分析讨论

图5—1 棋盘

图5—1 棋盘图,当选择好黑白角色后点击开始,便可以下棋;点击重置时重新开始下棋;点击退出时结束游戏,并退出。该棋盘未实现网络棋盘,只能自己跟自己下棋。还欠缺悔棋步骤,可以用Vector存储已下的棋子的信息,调用repaiant() 然后再画除最后一步的棋盘,实现悔棋操作。由于对Socket 用法还不熟悉,不能将棋盘通信与聊天通信区分开来,也就不能实现联网下棋。

图5—2ChatServer

如果用户登录则监听listening ......、accept a client使用了Socket,和多线程技术。定义了Vector 存储用户线程,实现ChatServer将信息传递给每个用户,接收每个用户的信息。

图5—3聊天对话框

用户4、5进入了聊天,对话。当对话框缩小或关闭时ChatServer都会发出用户离开的消息。此对话框可以允许多个用户群聊,但是少了一个窗口显示所有在线用户信息。即要求五,增强功能未实现。不能实现用户注册,添加好友,查看好有信息,对于数据库的使用不太熟悉。

六、设计体会与小结

经过为期一周的课程设计,感觉自己所学远远不能解决做课设时的需求。在熟悉课本和上网搜索后,才算马马虎虎的完成了任务。

在画棋盘时,调用draw方法对于画图这块的坐标布置,在今后学画其他图画时能够得心应手。获取棋子方法的巧妙,注册鼠标,获取点击位置,除以棋盘间隔,去掉不为整数的一块,再乘以棋盘间隔便获得最临近点的下棋坐标,即所要下棋的位置。用二维数组模拟棋盘,无棋子的置为0,黑子置为1,白子置为2,以便在判断胜负时利于同色棋子的查找。整个棋盘就模拟出来了,很巧妙,不过有更好的方法用向量存储棋子信息,便于悔棋等操作。

实现多用户聊天,老师后面讲的不是很多,做起来有点费力。参考网上资料,明白Socket原理。开始时照着课本上的例子,不能得出想要的效果,而且只运行了一个程序看不到有通信的效果。后面在运行了Server类后,自己尝试着两个Client类,实现了通话,就像腾讯QQ里面一样的效果。里面定义了Vector 线程,实现了多线程用法。

两个板块大体实现,但是后面的要求五,由于数据库的使用不是太熟悉,不能注册用户,添加好友,查找好友,还有悔棋操作未能实现。此程序最大的缺点还在于,不能实现网络两人下五子棋。由于不能将棋盘信息与聊天信息区分,不能告诉对反自己下了哪一步,所以根据自己的水平也就能做到这了,今后加以完善。

感觉这次课设有点失败,平时学的不能灵活的运用,今后得多加练习,多点锻炼的机会,积累跟多的知识。还有算法这块,解决一个问题的关键,培养一个好的类的思想,将问题有条有理的理清。形成一个清晰的思路后,在动手,下笔如有神。

七、参考文献

[1]丁振凡. Java语言实用教程(第2版)[M]. 北京邮电大学出版社. 2008.1

[2]丁振凡. Java语言实用教程实验指导(第2版)[M]. 北京邮电大学出版社. 2008.1

[3]杨树林等. Java语言最新实用案例教程(第2版)[M]. 清华大学出版社. 2010.7

附录

package 五子棋;

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

import java.applet.Applet;

import java.awt.Color;

import java.io.*;

import https://www.wendangku.net/doc/a87088459.html,.*;

import javax.swing.*;

public class WuZiQi extends JApplet implements ActionListener

,MouseListener,MouseMotionListener,ItemListener,Runnable{

int color_Qizi=0;// 黑子0 白子1

int ChessBody[][]=new int[17][17];//无棋子0,黑棋1,白棋2;

int GameStart=0;

JButton start,exit,rest;

JButton check[]=new JButton[3];

String chess[]={"黑方","白方","旁观"};

JTextArea txtDisplay;

JTextField txtInput;

DataInputStream in;

DataOutputStream out;

public void init(){

setLayout(null);

start=new JButton("开始");

rest=new JButton("重置");

exit=new JButton("退出");

Panel p1=new Panel();

p1.add(start); p1.add(rest);

p1.add(exit);

add(p1); p1.setBounds(130,510,300,50);

Panel p2=new Panel();

for(int i=0;i

{check[i]=new JButton(chess[i]);

p2.add(check[i]); }

add(p2); p2.setBounds(600,50,200,50);

for(int i=0;i

{check[i].addActionListener(this); }

start.addActionListener(this);

exit.addActionListener(this);

rest.addActionListener(this);

addMouseListener(this);

txtDisplay = new JTextArea(10,50);

txtDisplay.setEditable(false);

txtInput = new JTextField(10);

Panel chat=new Panel();

chat.setLayout(new BorderLayout());

chat.add(BorderLayout.CENTER,new JScrollPane(txtDisplay));

chat.add(BorderLayout.SOUTH,txtInput);

add(chat);chat.setBounds(900, 300, 350, 300);

txtInput.addActionListener(//对输入文本框地方注册事件监听

new ActionListener() {

public void actionPerformed(ActionEvent event) {

String str = txtInput.getText();

txtInput.setText("");

try {

out.writeUTF(str);

}catch(Exception e) {}}

});

in = null; out = null;

初始化网络,并连接到服务端

try {//获得URL

URL url = this.getCodeBase;

InetAddress addr = InetAddress.getByName(url.getHost());

Socket socket;

System.out.println ("Server: "+addr+" "+url.getHost()+" "+url.getProtocol()); //5555 为服务器端口

socket = new Socket(addr,5555);//由本套接口获得输入,输出流

in = new DataInputStream(socket.getInputStream());

out = new DataOutputStream(socket.getOutputStream());

}catch (Exception ex) {ex.printStackTrace();

}

new Thread(this).start();//线程开始

}

public void actionPerformed(ActionEvent e){

Graphics g=getGraphics();

if(e.getSource()==start){

GameStart();}

if(e.getSource()==rest){

GameReSt();}

if(e.getSource()==exit){

GameEnd();

if(e.getSource()==check[0])

color_Qizi=0;

}

public void mousePressed(MouseEvent e){}

public void mouseClicked(MouseEvent e){//获取下棋位点int x,y;

x=e.getX();y=e.getY();

if(x<45||y<45||x>495||y>495)

{return;}

if(x%30>15)//获取下棋点的位置

{x+=30;}

if(y%30>15)

{y+=30;}

x=x/30*30; y=y/30*30;

PlayQizi(x,y);//下棋

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

public void mouseDragged(MouseEvent e){}

public void mouseMoved(MouseEvent e){}

public void paint(Graphics g){

QiPan(g);

}

public void PlayQizi(int x,int y){ if

(GameStart==0) //判断游戏未开始{ return; }

if (ChessBody[x/30][y/30]!=0) {return;}

Graphics g=getGraphics();

if (color_Qizi==1)//判断黑子还是白子

{g.setColor(Color.black);

color_Qizi=0;}

else {g.setColor(Color.white);

color_Qizi=1;

}

g.fillOval(x-12,y-12,24,24);

ChessBody[x/30][y/30]=color_Qizi+1;

///判断输赢//////

g.setColor(Color.magenta);

g.setFont(new Font("fhahf ",Font.BOLD,30));

if(GameWin横(x/30,y/30))

{g.drawString(GetQiziColor(color_Qizi)+"赢了!",200,200);GameStart=0;

}

if(GameWin竖(x/30,y/30)){

g.drawString(GetQiziColor(color_Qizi)+"赢了!",200,200);GameStart=0;

}

if(GameWin撇(x/30,y/30)){

g.drawString(GetQiziColor(color_Qizi)+"赢了!",200,200); GameStart=0;

}

f(GameWin捺(x/30,y/30)){

g.drawString(GetQiziColor(color_Qizi)+"赢了!",200,200);

GameStart=0;

}

}//////////////获得赢方//////////////////////////

public String GetQiziColor(int x)

{ if(x==0 )return "黑方";else return "白方"; }

//////////////判断输赢////////////////////////////////////

public boolean GameWin横(int x,int y){ int x1,y1;int t=1;

x1=x;y1=y;

for(int i=1;i<5;i++)

{if(x1>16)break;

if(ChessBody[x1+i][y1]==ChessBody[x][y]) t+=1;

else break;

}

for(int i=1;i<5;i++)

{if(x1<2)break;

if(ChessBody[x1-i][y1]==ChessBody[x][y])t+=1; else break;

}

if(t>4) return true;

else return false;

}

public boolean GameWin竖(int x,int y){

int x1,y1;int t=1;x1=x;y1=y;

for(int i=1;i<5;i++)

{if(x1>16)break;

if(ChessBody[x1][y1+i]==ChessBody[x][y]) t+=1; else break;

}

for(int i=1;i<5;i++)

{if(x1<2)break;

if(ChessBody[x1][y1-i]==ChessBody[x][y]) t+=1; else break;

}

if(t>4)

return true;

else return false;

}

public boolean GameWin撇(int x,int y){

int x1,y1;int t=1;

x1=x;y1=y;

for(int i=1;i<5;i++)

{if(x1>16)break;

if(ChessBody[x1+i][y1-i]==ChessBody[x][y])t+=1; else break;

}

for(int i=1;i<5;i++)

{if(x1<2)break ;

if(ChessBody[x1-i][y1+i]==ChessBody[x][y]) t+=1; else break;

}

if(t>4)return true;

else return false;

}

public boolean GameWin捺(int x,int y){

int x1,y1;int t=1;x1=x;y1=y;

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

if(x1>16)break;

if(ChessBody[x1-i][y1-i]==ChessBody[x][y]) t+=1;

else break;

}

for(int i=1;i<5;i++)

{if(x1<2)break;

if(ChessBody[x1+i][y1+i]==ChessBody[x][y]) t+=1;

else break;

}

if(t>4) turn true;

else eturn false;

}

public void GameStart()//游戏开始

{GameStart=1;

Game_btn_enable(false);

rest.setEnabled(true);

}

public void Game_btn_enable(boolean e){

start.setEnabled(e);rest.setEnabled(e);

for(int i=0;i

{ check[i].setEnabled(e);}

}

public void GameStartInit(){//初始化

GameStart=0;

Game_btn_enable(true);

start.setEnabled(true);

for(int i=0;i<17;i++)

for(int j=0;j<17;j++)

{ChessBody[i][j]=0;}

}

public void GameReSt(){//重置

repaint();

GameStartInit();

}

public void QiPan(Graphics g){//画棋盘

g.setColor(Color.cyan);

int m=45;int n=m+15;

G.fillRect(m,m,450,450);

g.setColor(Color.black);

for(int i=0;i<15;i++)

g.drawLine(n,n+i*30,n+420,n+i*30);

for(int i=0;i<15;i++)

g.drawLine(n+i*30,n,n+i*30,n+420);

g.fillRect(n+3*30-3,n+3*30-3,6,6);

g.fillRect(n+3*30-3,n+11*30-3,6,6);

g.fillRect(n+11*30-3,n+3*30-3,6,6);

g.fillRect(n+11*30-3,n+11*30-3,6,6);

g.fillRect(n+7*30-3,n+7*30-3,6,6);

}

/////////////////////////运行监听方法//////////////////////////

public void run() {

try {//监视服务器所发送的信息

while(true) {

String receive = in.readUTF();

if(receive!=null){

txtDisplay.append(receive + "\n");

//将光标移动到最后一个以实现滚动条的自动置底txtDisplay.setCaretPosition(txtDisplay.getText().length());

}

}

}catch (Exception ex) {

txtDisplay.append("Network problem or Server down"); txtInput.setVisible(false);}

}

public void stop()

try {

out.writeUTF("leave");

}catch (Exception ex) {}

}

}

/*ChatServer类*/

import https://www.wendangku.net/doc/a87088459.html,.*;

import java.io.*;

java课程设计报告书

《Java程序设计》课程设计报告2015—2016学年第二学期 设计题目:《数字连连看》 学生:黄杰 学号: 2 专业班级:软件工程1402 指导教师:国权 2016 年7 月2 日

目录 1.JAVA程序设计书 3 1.1《简易连连看》 3 1.1.1具体要求 3 1.2本系统设计的知识点 3 2.功能设计 3 2.1算法设计 3 2.2部分模块流程图 4 3.代码设计 5 4.界面及运行效果,测试工具与测试效果14 5.设计总结 16 5.1.程序调试情况:16 5.2.本人在程序设计中感想: 16 6.致 16 主要参考文献16

: 1.1Java程序课程设计任务书 1.1《简易连连看游戏》 本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。 1.1.1具体要求(包括技术要求等): <1>. 该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。方块上随机分布一些数字,数字的要至少两两相同,位置随机打乱。 <2>. 当将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束,并能返回所得分数。 <3>. 重列按钮(帮助)的功能:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。 <4>. 退出按钮:击左下方的“退出游戏”按钮,即可结束游戏。 1.2本系统涉及的知识点: 循环,javaGUI组件,函数,数组,分支等 2.功能设计 2.1算法设计 本系统需要实现的功能要求: 图一,数字按钮功能模块 图二,三个功能按钮模块

java课程设计之贪吃蛇

系统描述 (1) 1.1本设计的目的和意义 (1) 1.2设计的主要内容 (1) 1.3设计要达到的目标 (2) 1.4设计需要实现的功能和目标 (2) 1.5游戏设计环境 (2) 二分析与设计 (3) 2.1 游戏处理流程 (3) 2.2需求分析 (4) 2.3功能模块设计 (4) 2.4详细设计 (8) 三系统测试 (19) 四心得体会 (21) 五参考文献 (22) 六附录 (24)

基于Java的游戏“贪吃蛇”的设计和实现 内容提要: “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软 件开发流程的目的。 一系统描述 1.1本设计的目的和意义 贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。 贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。 正是因为如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用JBuilder开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握JBuilder环境的使用方法,培养起初步的项目分析能力和程序设计能力。 1.2设计的主要内容 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现开始、暂停、退出等功能。

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课程设计报告 模板

浙江科技学院 《Java程序设计》课程设计报告 设计题目:学生信息管理系统 姓名:邱焕明 学号: 所属院系:信息学院 专业:软件工程 小组成员:邱焕明 设计时间: -1-6 指导教师:虞建东

一、课程设计目的 (1)实验目的:结合开发的系统,给出学生信息管理系统 二、课程设计完成的任务 三、设计过程 (一)需求分析 1、基础资料管理 基础资料管理包括对院系、班级和学期的设置。该模块可实现以下功能: 添加、修改、删除和显示院系代码、院系名称和电话号码。 添加、修改、删除和显示班级代码、班级名称、学生人数和所属院系名。 添加、修改、删除和显示学期代码、学期名称。 2、学生信息管理 学生信息管理包括对学生档案和学籍的管理。该模块可实现以下功能: 添加、修改、查询和显示学生的基本信息、所属班级和院系。 记录学生学籍、学生离校信息和学生调动信息。 3、课程信息管理 课程信息管理包括对课程设置和班级选课的管理。该模块可实

现以下功能: 添加、修改、删除和显示课程代码、课程名称、学分和院系名称。 添加、删除和提交班级所选课程。 4、成绩信息管理 成绩信息管理包括对成绩录入和成绩分析的管理。该模块可实现以下功能: 录入班级课程成绩,以不同形式(列表统计、图表分析)显示班级课程成绩。 (二)系统设计概念、流程初定义 1、实体名:院系 2、实体名:班级 3、实体名:学生 4、实体名:课程 (三)系统内容规划 1、班级信息表 表3-1 班级信息表 2、课程信息表 表3-2 课程信息表

(四)系统总体设计 内 (五)系统详细设计 (六)系统测试 列名 数据类型 长度 备注 课程代码 char 10 主键 课程名称 varchar 50 无 学 分 tinyint 1 无 所属院系 varchar 50 无

Java课程设计报告

湖北大学 本科课程设计 题目 ATM 自助机模拟程序姓名 学号 专业年级 指导教师 职称

目录 第一章系统描述 (2) 1 前言 (2) 2 系统功能需求 (2) 第二章系统分析与设计 (3) 1 功能模块划分 (3) 2 功能模块的描述 (3) 3 系统设计流程图 (4) 4 测试数据及期望结果 (6) 第三章系统详细设计 (7) 1 主界面开发设计 (7) 2 功能选择界面开发设计 (7) 3 取款界面开发设计 (7) 4 存款界面开发设计 (8) 5 转账界面开发设计 (8) 6 查询界面开发设计 (9) 7 修改密码界面开发设计 (9) 8 界面开发设计使用函数 (9) 第四章系统测试 (11) 第五章源程序部分清单 (21) 第六章实验心得 (30) 参考文献 (31)

第一章系统描述 1 前言 Java技术是一门简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言,它也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。Java编程语言与众不同之处在于:Java程序既是编译型的,又是解释型的。 Java平台是一种纯软件平台,它有三个版本Java SE、Java EE、Java ME。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 本课程设计采用Eclipse作为开发工具,并采用Window Builder下的SWT Designer来实现相应的功能。着重通过模拟实现当前非常快捷又使用的ATM机来加深对java开发设计的了解,从而进一步提高自己对java图像界面的设计及相关知识的认识。 2 系统功能需求 当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM 柜员机系统,用户可以按照以下规则进行: (1)查询余额:初始余额为10000元。 (2)ATM取款:每次取款金额为100的倍数,一次取款不能超过1000,总额不 超过5000元,支取金额不允许透支,有快捷取款和用户自定义取款。 (3)ATM存款:每次存款金额为100的倍数,一次存款不能超过1000,不能出 现负存款。 (4)ATM转账:只有在两次输入账号相同且输入转账金额正确的情况下才允许 转账,不允许透支。 (5)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只 有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

java课程设计贪吃蛇游戏设计

前言 Java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景。于是改造了Oak,以“Java”的名称正式发布。 Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

五子棋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);

五子棋-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

java课程设计报告书

《Java程序设计》课程设计报告 2015—2016学年第二学期 设计题目:《数字连连看》 学生:黄杰 学号: 2 专业班级:软件工程1402 指导教师:国权 2016 年 7 月 2 日 目录 1.JAVA程序设计书 3 1.1《简易连连看》3 1.1.1具体要求 3 1.2本系统设计的知识点 3

2.功能设计 3 2.1算法设计 3 2.2部分模块流程图 4 3.代码设计 5 4.界面及运行效果,测试工具与测试效果14 5.设计总结 16 5.1.程序调试情况:16 5.2.本人在程序设计中感想: 16 6.致 16 主要参考文献16

: 1.1Java程序课程设计任务书 1.1《简易连连看游戏》 本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。 1.1.1具体要求(包括技术要求等): <1>. 该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。方块上随机分布一些数字,数字的要至少两两相同,位置随机打乱。 <2>. 当将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束,并能返回所得分数。 <3>. 重列按钮(帮助)的功能:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。 <4>. 退出按钮:击左下方的“退出游戏”按钮,即可结束游戏。 1.2本系统涉及的知识点: 循环,javaGUI组件,函数,数组,分支等 2.功能设计 2.1算法设计 本系统需要实现的功能要求: 图一,数字按钮功能模块 图二,三个功能按钮模块

Java课程设计之贪吃蛇

Java课程设计之贪吃蛇 安阳工学院计算机学院 JAVA课程设计报告 专业班级: 学生姓名: 学生学号: 小组成员: 指导教师姓名: 宋强 目录 一选题目的与系统概述 (1) 1.1选题目的 (1) 1.2系统概述.................................................................................1 二系统可行性分析与相关技术背景分析 (2) 2.1系统可行性分析 (2) 2.2相关技术背景分析.....................................................................2 三系统设计与关键技术 (3) 3.1系统设计 (3) 3.2关键技术.................................................................................5 四系统测试与操作实施方法.........................................................9 五系统设计总结与回顾 (11) 六参考文献 (12) 一、选题目的与系统概述 1.1 选题目的 贪吃蛇游戏是一款非常经典的游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。

在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。 正是因为如此,本次设计的目的在于学习Java程序设计基本技术,学习用Netbeans开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握Netbeans环境的使用方法,培养起初步的项目分析能力和程序设计能力。 1.2 系统概述 1.2.1 设计的主要内容 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。可实现开始、暂停、改变速度,更换颜色等功能。 1.2.2 设计要达到的目标 本次设计要达到的目标分别从以下模块进行阐述: 游戏主界面模块: 游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏场景、状态栏、颜色设置、网格模式、及相关提示信息等。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。 游戏控制模块: 这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停等功能。为了能

Java课程设计报告书

华东交通大学理工学院课程设计报告书( 2010-- 2011年度第 2 学期) 所属课程名称 Java面向对象程序设计题目设计一个多功能计算器分院电信分院 专业班级 09信管<1>班 学号 20090210450106 蔡炜指导教师黄建华 2011年06月23日

华东交通大学理工学院 课程设计(论文)任务书专业09信管班级 <1>班姓名蔡炜 一、课程设计(论文)题目设计一个多功能计算器 二、课程设计(论文)工作:自 2011 年06 月 13日起至2011年 06 月 23日止。 三、课程设计(论文)的内容要求: 本应用程序继承自框架类(JFrame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮的面板Panel p加入到”Center”区域。包含各种按钮的面板Panel p 采用4行5列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如:Button b=new Button(); b.addActionListener(事件监听器); 事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、清零按钮事件(“C”)。

在事件处理触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。 计算器完成的是一个数学表达式,如:3+2,所以可以采用一个链表(LinkedList类)来存储数字或字符,如3,+,2分别存储在链表中,最后运算时,可以一一取出来进行运算。 学生签名: ( ) 2011 年06 月 23 日 课程设计(论文)评阅意见 评阅人职称 20 年月日

java贪吃蛇课程设计

1设计目的 1.1背景 近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。JBuilder是Borland公司用于快速开发Java应用的一款优秀的集成开发环境,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的接受和认可。 “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。 本文在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。首先,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。其次,从游戏主界面等几方面,分析了本游戏的功能需求;从可使用性和安全性方面分析了属性需求。然后,进行了游戏的概要设计和详细设计,这也是本文的重点。概要设计给出二个功能模块的主框架以及六个类模块的函数调用关系;详细设计介绍了Java2标准运行环境的配置,重点给出各个类模块的程序流程图以及UML图,列表介绍了各个类包含的变量、使用的方法,展示了游戏的界面。为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。 1.2目标 本软件是针对贪吃蛇小游戏的JAVA程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。 2 总体设计 2.1 设计思路 本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求: (1) 利用方向键来改变蛇的运行方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。 2.2 设计说明 本系统共包括1个java源文件和7个类文件。

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语言程序设计 设计题目:学生成绩管理系统 院系:计算机科学与信息工程学院 学生姓名:肖文 学号:14031010141 专业班级:计算机科学与技术(14嵌入) 指导教师:张阳 2015 年12月27 日

课程设计任务书 设计题目贪吃蛇小游戏程序 学生姓名肖文所在院系计科专业、年级、班14计科嵌入 设计要求: 1. 贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松 各种压力的目的。 2. 游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得 太无趣。 3. 游戏界面大小可以任意指定,数据从文件读入。 4. 利用swing实现良好的GUI界面。 学生应完成的工作: 1. 贪食蛇的前移算法主要是蛇身结点前移,后面的覆盖前面的蛇身结点。依靠的调 用编写的成员方法实现。 2. 在贪吃蛇中蛇头来控制蛇的移动方向,依靠的调用编写的成员方法实现。 3. 要求用户界面采用图形用户界面,影响方向键的控制。 4. 重复的调用paint()函数来实现对界面的重绘和食物的重置。 5. 源程序中要有充分的注释,报告中要有详细的流程图。 6. 运行的结果以及图形用户界面要进行屏幕拷贝,插入报告中。 幕拷贝,插入报告中。 参考文献阅读: 1. 《Java语言程序设计》(美)Y·Daniel Liang 机械工业出版社 2. 赵毅主编.跨平台程序设计语言——Java.西安:西安电子科技大学出版社,2006 3. 王路群.Java高级程序设计.北京:中国水利水电出版社,2006 工作计划: 1,12月21日,选择该课题,然后分析结构。 2,12月21日至25日开始编写各个模块。 3,12月28日至29日,对设计的系统进行测试以及进行修改。 4,12月30日,贪吃蛇完成。 任务下达日期:2015 年12月10 日 任务完成日期:2015 年12月24 日 指导教师(签名):学生(签名):

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.wendangku.net/doc/a87088459.html,/ 5)课程设计进度安排 内容天数地点 系统总体设计 1 实验室 软件设计及调试 1 实验室 答辩及撰写报告 1 实验室、图书馆 学生签名: 2015年6月25日 课程设计(论文)评审意见 (1)课程设计过程(20分):优()、良()、中()、一般()、差(); (2)是否完成调试,系统运行效果(30分):优()、良()、中()、一般()、差(); (3)回答问题(20分):优()、良()、中()、一般()、差();(4)课程设计报告(30分):优()、良()、中()、一般()、差(); (5)格式规范性及考勤是否降等级:是()、否() 评阅人:职称:教授 2015年 6月25日

java课程设计2013级大纲以及设计报告

珠海学院课程教学大纲 课程名称:java程序课程设计 适用专业: 2013级计算机科学与技术 课程类别:专业基础课 制订时间:2014年12月 计算机科学与技术系制

目录 1java程序课程设计教学大纲 2 java程序课程设计说明书 3 java程序课程设计报告(模板) 4 java程序课程设计成绩评定表 java程序课程设计教学大纲 (2011年制订,2014年修订) 一、课程编号: 二、前修课程:java程序设计 三、学分:2学分 四、学时: 32学时 五、课程性质与任务: 1.课程性质:《java程序课程设计》是吉林大学珠海学院计算机科学与技术系为本科生各专业开设的专业实践课。计算机科学与技术系本科生在完成《java 程序设计》课程学习后,通过本课程进入专业实践训练环节,其主要目的是使学生深入理解并实践在《java程序设计》课程中所学的有关知识,通过课程设计增强学生的实践动手能力,提高学生独立分析和解决实际问题的能力。培养学生配合完成任务的能力,为学生毕业后的实际工作打好基础。 课程设计是培养学生综合运用所学知识锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。Java语言的应用十分广泛,例如大型信息系统、通信、网络控制等。java课程设计对增强学生对基础知识的掌握和综合运用是非常必要,对后续许多专业课程的学习和实践训练都具十分重要的意义。 2.课程任务:本课程要求学生在学习了java基础编程的相关技术后,将课本中多个章节的编程技术灵活运用到一些复杂的综合例题中去,使学生了解应用问题

的分析方法和设计解决实际问题的具体过程,掌握应用java进行程序设计的基本规范和技巧,掌握面向对象编程的设计思想,重点掌握java的基本语法规则、输入输出方法、网络编程、多线程编程、小应用程序、数据库编程的综合应用。通过编程掌握调试java程序的基本技巧、模块化应用程序和测试运行复杂应用程序的基本流程。 六、课程教学基本要求提供足够多的程序设计选题,题目应覆盖面较为广泛,部分题目要具有开放性,要求每个学生根据自己的实际情况选择题目,经教师批准后即可进入实际工作阶段。 课程设计结束对每个学生进行验收,要求每个学生提交合格的课程设计报告,还要保证程序能够运行,能够讲清楚自己的工作。老师在检查过程中可针对程序提出问题,学生回答,若程序无法运行得到结果并且具有大量编译错误,而且对程序的内容无法正确解释,则实践老师可以根据实际情况给予评分为不及格,若程序可以运行,但完成的界面以及方法不够完善,则酌情扣分,若程序运行无问题,则提问回答不好的也要相应扣分。课程设计课程集中安排在第十一周。每个同学都要提交初期、中期和最后的文档,提交课程设计报告,要求在规定时间内提交文档。最后验收时,若文档不全,成绩受到一定影响。 七、学时分配表 2011年 12 月8日 java程序课程设计说明书

java+五子棋+课程设计报告 (2)

课程设计(论文)任务书 软件学院软件工程+电子商务专业2007-2班 一、课程设计(论文)题目多用户五子棋游戏 二、课程设计(论文)工作自2009年6月15日起至2009年6月19 日止。 三、课程设计(论文) 地点: 创新大楼310 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应用软件、开发系统软件等各项工作。 (2)通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。 2.课程设计的任务及要求 1)基本要求: 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌及角色(执黑、执白、观看)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);发言及显示区;用户列表区;棋盘绘制区。 2)创新要求: 在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。 3)课程设计论文编写要求 (1)要按照书稿的规格打印与写课程设计论文 (2)论文包括目录、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等 (3)课程设计论文装订按学校的统一要求完成 4)答辩与评分标准:

(1)完成基本算法设计:20分; (2)完成设计过程:40分; (3)完成调试:20分; (4)回答问题:20分。 5)参考文献: [1]吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社 [2] 柳西玲.许斌编著.Java语言应用开发基础.北京:清华大学出版社 [3] (美)CayS.Horsttmann Gary Cornell JAVA核心技术卷i:基础知识(原书第七版):机械工业出版社 [4]丁振凡Java 语言实用教程:北京邮电大学出版社 [5]https://www.wendangku.net/doc/a87088459.html, 6)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 编码与调试 2.5实验室 撰写论文 1.5图书馆、实验室 学生签名: 2009年6 月15 日 课程设计(论文)评审意见 (1)完成基本算法(20分):优()、良()、中()、一般()、差();(2)完成调试(20分):优()、良()、中()、一般()、差();(3)创新设计(20分):优()、良()、中()、一般()、差();(4)设计分析(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是( )、否() 评阅人:职称: 2009年6月21 日

java课程设计贪吃蛇

JAVA设计贪吃蛇游戏 1.课程设计目的 《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。 2.设计方案论证 2.1设计思路 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现移动速度、暂停、重新开始等功能。 游戏主界面模块: 游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、新生方块的预览、游戏速度控制按钮、暂停游戏按钮、重新开始游戏按钮以及游戏排行榜按钮。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。 游戏控制模块: 这个模块是游戏的中心环节,主要完成控制游戏的速度、暂停、重新开始等功能。为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。 本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的速度控制、游戏的暂停、游戏的退出等功能,分为: 游戏主界面模块、游戏控制模块以二个模块。 性能: 本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。

相关文档
相关文档 最新文档