java 五子棋 课程设计报告.docx

上传人:b****2 文档编号:598566 上传时间:2023-04-29 格式:DOCX 页数:43 大小:189.04KB
下载 相关 举报
java 五子棋 课程设计报告.docx_第1页
第1页 / 共43页
java 五子棋 课程设计报告.docx_第2页
第2页 / 共43页
java 五子棋 课程设计报告.docx_第3页
第3页 / 共43页
java 五子棋 课程设计报告.docx_第4页
第4页 / 共43页
java 五子棋 课程设计报告.docx_第5页
第5页 / 共43页
java 五子棋 课程设计报告.docx_第6页
第6页 / 共43页
java 五子棋 课程设计报告.docx_第7页
第7页 / 共43页
java 五子棋 课程设计报告.docx_第8页
第8页 / 共43页
java 五子棋 课程设计报告.docx_第9页
第9页 / 共43页
java 五子棋 课程设计报告.docx_第10页
第10页 / 共43页
java 五子棋 课程设计报告.docx_第11页
第11页 / 共43页
java 五子棋 课程设计报告.docx_第12页
第12页 / 共43页
java 五子棋 课程设计报告.docx_第13页
第13页 / 共43页
java 五子棋 课程设计报告.docx_第14页
第14页 / 共43页
java 五子棋 课程设计报告.docx_第15页
第15页 / 共43页
java 五子棋 课程设计报告.docx_第16页
第16页 / 共43页
java 五子棋 课程设计报告.docx_第17页
第17页 / 共43页
java 五子棋 课程设计报告.docx_第18页
第18页 / 共43页
java 五子棋 课程设计报告.docx_第19页
第19页 / 共43页
java 五子棋 课程设计报告.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java 五子棋 课程设计报告.docx

《java 五子棋 课程设计报告.docx》由会员分享,可在线阅读,更多相关《java 五子棋 课程设计报告.docx(43页珍藏版)》请在冰点文库上搜索。

java 五子棋 课程设计报告.docx

java五子棋课程设计报告

课程设计(论文)任务书

软件学院 软件工程+电子商务专业 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.HorsttmannGaryCornellJAVA核心技术卷i:

基础知识(原书第七版):

机械工业出版社

[4]丁振凡Java语言实用教程:

北京邮电大学出版社

[5]

6)课程设计进度安排

内容天数      地点

构思及收集资料1       图书馆

编码与调试2.5       实验室

撰写论文1.5       图书馆、实验室

学生签名:

2009年6月15日

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

(1)完成基本算法(20分):

优( )、良( )、中( )、一般( )、差( );

(2)完成调试  (20分):

优( )、良( )、中( )、一般( )、差( );

(3)创新设计  (20分):

优( )、良( )、中( )、一般( )、差( );

(4)设计分析  (20分):

优( )、良( )、中( )、一般( )、差( );

(5)回答问题  (20分):

优( )、良( )、中( )、一般( )、差( );

(6)格式规范性及考勤是否降等级:

是()、否( )

评阅人:

   职称:

2009年6月21日

绪论 

Java是由美国的sunmicrosystems公司发展出来的一套面向对象程序语言,因为它的面向对象,分散运算,跨平台等等特性,又支持多线程。

使得许多用过的人都爱不释手。

Java既是一种程序设计语言,也是一个完整的平台。

作为一种程序语言,它简洁、面向对象、安全、健壮,以及适用于Internet技术;而作为一个平台(JRE,JavaRuntimeEnvironment,Java运行环境或者说是Java虚拟机),对于符合Sun公司Java标准的应用程序,都可以在Java平台上正确运行,与程序运行的操作系统无关。

Java发展到今天,已从编程语言发展成为全球第一大通用开发平台。

Java技术已被计算机行业主要公司所采纳。

1999年,Sun公司推出了以Java2平台为核心的J2EE、J2SE和J2ME三大平台。

随着三大平台的迅速推进,全球形成了一股巨大的Java应用浪潮。

这个五子棋游戏正是用这个平台做的,在实践中充分体现出了Java面向对象给我们带来的方便。

多用户聊天程序也让我体会到了Java多线程的强大功能。

 

一题目内容及要求

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

(1)选择对弈桌及角色(执黑、执白、观看)。

(2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);发言及显示区;用户列表区;棋盘绘制区。

二设计思路

2.1工作原理图

2.2功能的规划

1.建立一个棋盘类,绘制棋盘的样式,在棋盘面板上添加各种按钮及相应胡触发事件。

同时注意面板的设计,使面板设计的尽量胡的合理美观。

a.棋盘的绘制

publicvoiddraw_qipan(GraphicsG)//画棋盘15*15{

G.setColor(Color.lightGray);

G.fill3DRect(10,10,300,300,true);

G.setColor(Color.black);

for(inti=1;i<16;i++){

G.drawLine(20,20*i,300,20*i);

G.drawLine(20*i,20,20*i,300);

}

}

b.添加按钮与按钮胡规划

Buttonb1=newButton("开始");

Buttonb2=newButton("重置游戏");

LabellblWin=newLabel("");

CheckboxckbHB[]=newCheckbox[3];

Buttonexist=newButton("退出");

publicvoidinit(){

ckbHB[0]=newCheckbox("执白",ckgHB,false);

ckbHB[1]=newCheckbox("执黑",ckgHB,false);

ckbHB[2]=newCheckbox("观看",ckgHB,false);

}

C.鼠标棋子胡相应触发事件

publicvoidmouseClicked(MouseEvente){

Graphicsg=getGraphics();

intx1,y1;

x1=e.getX();

y1=e.getY();

if(e.getX()<20||e.getX()>300||e.getY()<20||e.getY()>300){

return;

}

if(x1%20>10){

x1+=10;

}

if(y1%20>10){

y1+=10;

}

x1=x1/20*20;

y1=y1/20*20;

set_Qizi(x1,y1);

m*=(-1);

}

d.按钮的触发事件

publicvoidactionPerformed(ActionEvente){

Graphicsg=getGraphics();

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

Game_start();

}

else{

Game_re();

}

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

Game_re();

lblWin.setText(Get_qizi_color(color_Qizi)+"输了!

");

intGame_Start=0;

}

2.编写一个功能判断落子的位置及画出相应的黑白棋子

publicvoidset_Qizi(intx,inty)//落子{

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

return;

}

if(intGame_Body[x/20][y/20]!

=0){

return;

}

Graphicsg=getGraphics();

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

g.setColor(Color.black);

color_Qizi=0;

}

else{

g.setColor(Color.white);

color_Qizi=1;

}

g.fillOval(x-10,y-10,20,20);

intGame_Body[x/20][y/20]=color_Qizi+1;

3.判断胜负

if(Game_win_1(x/20,y/20))//判断输赢1{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_2(x/20,y/20))//判断输赢2{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_3(x/20,y/20))//判断输赢3{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_4(x/20,y/20))//判断输赢4{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}}

4.添加用户聊天功能

NetchatClientchat=newNetchatClient();

chat.frame();

chat.setVisible(true);

三具体实现

3.1创建棋盘类

PublicclassWcyChessextendsAppletimplementsActionListener,MouseListener,MouseMotionListener,ItemListener{

intcolor_Qizi=0;//旗子的颜色标识0:

白子1:

黑子

intintGame_Start=0;//游戏开始标志0未开始1游戏中

intintGame_Body[][]=newint[16][16];//设置棋盘棋子状态

intm=-1;

Buttonb1=newButton("开始");

Buttonb2=newButton("重置游戏");

LabellblWin=newLabel("");

CheckboxckbHB[]=newCheckbox[3];

Buttonexist=newButton("退出");

CheckboxGroupckgHB=newCheckboxGroup();

NetchatClientchat=newNetchatClient();

publicvoidinit(){

setLayout(null);

addMouseListener(this);

add(b1);

b1.setBounds(330,50,80,30);

b1.addActionListener(this);

add(b2);

b2.setBounds(330,90,80,30);

b2.addActionListener(this);

ckbHB[0]=newCheckbox("执白",ckgHB,false);

ckbHB[0].setBounds(320,20,60,30);

ckbHB[1]=newCheckbox("执黑",ckgHB,false);

ckbHB[1].setBounds(380,20,60,30);

ckbHB[2]=newCheckbox("观看",ckgHB,false);

add(ckbHB[0]);

add(ckbHB[1]);

add(ckbHB[2]);

ckbHB[0].addItemListener(this);

ckbHB[1].addItemListener(this);

add(lblWin);

lblWin.setBounds(330,180,80,30);

lblWin.setBackground(Color.red);

lblWin.setText("胜利者!

");//没有显示?

ckbHB[2].setBounds(440,20,60,30);

add(exist);

exist.setBounds(330,130,80,30);

exist.addActionListener(this);

//add(chat);chat.setBounds(20,500,300,300);

chat.frame();

chat.setVisible(true);

Game_start_csh();

setSize(500,600);

setVisible(true);

}

publicvoiditemStateChanged(ItemEvente){

if(ckbHB[0].getState())//选择黑子还是白子{

color_Qizi=0;

}

else{

color_Qizi=1;

}

}

 

publicvoidmousePressed(MouseEvente){}

publicvoidmouseClicked(MouseEvente){

Graphicsg=getGraphics();

intx1,y1;

x1=e.getX();

y1=e.getY();

if(e.getX()<20||e.getX()>300||e.getY()<20||e.getY()>300){

return;

}

if(x1%20>10){

x1+=10;

}

if(y1%20>10){

y1+=10;

}

x1=x1/20*20;

y1=y1/20*20;

set_Qizi(x1,y1);

m*=(-1);

}

publicvoidactionPerformed(ActionEvente){

Graphicsg=getGraphics();

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

Game_start();

}

else{

Game_re();

}

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

Game_re();

lblWin.setText(Get_qizi_color(color_Qizi)+"输了!

");

intGame_Start=0;

}

}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmouseReleased(MouseEvente){}

publicvoidmouseDragged(MouseEvente){}

publicvoidmouseMoved(MouseEvente){}

publicvoidpaint(Graphicsg){

draw_qipan(g);

}

3.2判断输赢功能实现

if(Game_win_1(x/20,y/20)){//判断输赢1

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_2(x/20,y/20)){//判断输赢2

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_3(x/20,y/20))//判断输赢3{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_4(x/20,y/20))//判断输赢4{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

//判断输赢程序实现在详细过程

publicbooleanGame_win_1(intx,inty){//横向判断输赢

intx1,y1,t=1;

x1=x;

y1=y;

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

if(x1>15){

break;

}

if(intGame_Body[x1+i][y1]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

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

if(x1<1)

break;

}

if(intGame_Body[x1-i][y1]==intGame_Body[x][y])

t+=1;

}

else{

break;

}

}

if(t>4){

returntrue;

}

else{

returnfalse;

}

}

publicbooleanGame_win_2(intx,inty){//纵向判断输赢

intx1,y1,t=1;

x1=x;

y1=y;

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

if(x1>15){

break;

}

if(intGame_Body[x1][y1+i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

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

if(x1<1){

break;

}

if(intGame_Body[x1][y1-i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

if(t>4){

returntrue;

}

else{

returnfalse;

}

}

publicbooleanGame_win_3(intx,inty)//左斜判断输赢{

intx1,y1,t=1;

x1=x;

y1=y;

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

if(x1>15){

break;

}

if(intGame_Body[x1+i][y1-i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

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

if(x1<1){

break;

}

if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

if(t>4){

returntrue;

}

else{

returnfalse;

}}

publicbooleanGame_win_4(intx,inty){//左斜判断输赢

intx1,y1,t=1;

x1=x;

y1=y;

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

if(x1>15){

break;

}

if(intGame_Body[x1+i][y1+i]==intGame_Body[x][y]){

t+=1;

}

else

{

break;

}

}

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

if(x1<1){

break;

}

if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y]){

t+=1;

}

else{

break;}}

if(t>4){

returntrue;

}

else{

returnfalse;

}

}

3.3实现聊天功能类

packageNetchatClient;

importjava.awt.*;

importjava.awt.event.*;

import.*;

importjava.io.*;

importjavax.swing.*;

publicclassNetchatClientextendsFrame{

Framex=newFrame("liaotianchengxu");

TextFieldtf=newTextField();

TextAreata=newTextArea();

Sockets=null;

DataOutputStreamdos=null;

publicstaticvoidmain(String[]args){

newNetchatClient().frame();

}

publicvoidframe(){

System.out.println("frame()");

setLocation(20,400);

setSize(300,300);

add(tf,BorderLayout.SOUTH);

add(ta,BorderLayout.NORTH);

pack();

setVisible(true);

connect();

this.addWindowListener(newWindowAdapter(){

publi

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2