java+五子棋+课程设计报告Word下载.docx
- 文档编号:20857028
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:37
- 大小:188.87KB
java+五子棋+课程设计报告Word下载.docx
《java+五子棋+课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《java+五子棋+课程设计报告Word下载.docx(37页珍藏版)》请在冰豆网上搜索。
40分;
(3)完成调试:
(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多线程的强大功能。
一题目内容及要求
要求实现一个简单的多用户五子棋胡游戏程序,包括如下两个界面:
二设计思路
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("
执黑"
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>
y1+=10;
x1=x1/20*20;
y1=y1/20*20;
set_Qizi(x1,y1);
m*=(-1);
d.按钮的触发事件
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b1){
Game_start();
else{
Game_re();
if(e.getSource()==exist){
lblWin.setText(Get_qizi_color(color_Qizi)+"
输了!
"
intGame_Start=0;
}
2.编写一个功能判断落子的位置及画出相应的黑白棋子
publicvoidset_Qizi(intx,inty)//落子{
if(intGame_Start==0)//判断游戏未开始{
if(intGame_Body[x/20][y/20]!
=0){
if(color_Qizi==1)//判断黑子还是白子{
g.setColor(Color.black);
color_Qizi=0;
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{
赢了!
}
if(Game_win_2(x/20,y/20))//判断输赢2{
if(Game_win_3(x/20,y/20))//判断输赢3{
if(Game_win_4(x/20,y/20))//判断输赢4{
}}
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("
CheckboxGroupckgHB=newCheckboxGroup();
NetchatClientchat=newNetchatClient();
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].setBounds(320,20,60,30);
ckbHB[1].setBounds(380,20,60,30);
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())//选择黑子还是白子{
publicvoidmousePressed(MouseEvente){}
publicvoidmouseClicked(MouseEvente){
y1+=10;
publicvoidactionPerformed(ActionEvente){
else{
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
if(Game_win_2(x/20,y/20)){//判断输赢2
//判断输赢程序实现在详细过程
publicbooleanGame_win_1(intx,inty){//横向判断输赢
intx1,y1,t=1;
x1=x;
y1=y;
for(inti=1;
5;
i++){
if(x1>
15){
break;
if(intGame_Body[x1+i][y1]==intGame_Body[x][y]){
t+=1;
else{
i++){
if(x1<
1)
if(intGame_Body[x1-i][y1]==intGame_Body[x][y])
if(t>
4){
returntrue;
returnfalse;
publicbooleanGame_win_2(intx,inty){//纵向判断输赢
15){
if(intGame_Body[x1][y1+i]==intGame_Body[x][y]){
1){
if(intGame_Body[x1][y1-i]==intGame_Body[x][y]){
publicbooleanGame_win_3(intx,inty)//左斜判断输赢{
if(intGame_Body[x1+i][y1-i]==intGame_Body[x][y]){
if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y]){
}}
publicbooleanGame_win_4(intx,inty){//左斜判断输赢
if(intGame_Body[x1+i][y1+i]==intGame_Body[x][y]){
else
{
1){
if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y]){
}}
4){
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(){
public
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 五子棋 课程设计 报告