JAVA五子棋课程设计报告书.docx

上传人:b****8 文档编号:8908905 上传时间:2023-05-16 格式:DOCX 页数:18 大小:74.76KB
下载 相关 举报
JAVA五子棋课程设计报告书.docx_第1页
第1页 / 共18页
JAVA五子棋课程设计报告书.docx_第2页
第2页 / 共18页
JAVA五子棋课程设计报告书.docx_第3页
第3页 / 共18页
JAVA五子棋课程设计报告书.docx_第4页
第4页 / 共18页
JAVA五子棋课程设计报告书.docx_第5页
第5页 / 共18页
JAVA五子棋课程设计报告书.docx_第6页
第6页 / 共18页
JAVA五子棋课程设计报告书.docx_第7页
第7页 / 共18页
JAVA五子棋课程设计报告书.docx_第8页
第8页 / 共18页
JAVA五子棋课程设计报告书.docx_第9页
第9页 / 共18页
JAVA五子棋课程设计报告书.docx_第10页
第10页 / 共18页
JAVA五子棋课程设计报告书.docx_第11页
第11页 / 共18页
JAVA五子棋课程设计报告书.docx_第12页
第12页 / 共18页
JAVA五子棋课程设计报告书.docx_第13页
第13页 / 共18页
JAVA五子棋课程设计报告书.docx_第14页
第14页 / 共18页
JAVA五子棋课程设计报告书.docx_第15页
第15页 / 共18页
JAVA五子棋课程设计报告书.docx_第16页
第16页 / 共18页
JAVA五子棋课程设计报告书.docx_第17页
第17页 / 共18页
JAVA五子棋课程设计报告书.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JAVA五子棋课程设计报告书.docx

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

JAVA五子棋课程设计报告书.docx

JAVA五子棋课程设计报告书

 

2011—2012学年第一学期

 

《Java程序设计》课程大作业

 

题目:

五子棋

 

专业:

计算机

班级:

09计算机2班

学号:

090400509

:

教师:

树林

日期:

2011年12月22日

项目

单项分值

总分

选题

1.题目明确,系统功能较集中

4

8

2.题目难度适宜,有一定的综合性

4

功能实现

3.功能完整,能够正确运行

6

24

4.模块划分合理,程序结构清晰

6

5.界面设计合理、易用、协调

6

6.设计与实现程序

6

规性及文档

7.代码规性及注释

5

10

8.文档容齐全,格式规

5

总体效果

9.完成总体质量

6

12

10.软件功能及技术水平

6

答辩

11.讲解清楚明了,功能演示流畅

6

6

评语

总分

题目:

五子棋

作者:

一.引言

五子棋游戏是常见的经典游戏,在19*19的棋盘方格上进行对弈,由于时间与基础知识的掌握程度限制,现初步完成简易五子棋的实现。

本程序完全由JAVA语言编写而成,单击“开始游戏按钮”将弹出确认对话框,当点击对话框上的“确认”按钮,游戏正式开始;“认输”按钮表示当对弈双方有一方认输时,结束比赛并且输出结果;“关于”按钮的功能可以由制作者自己添加,主要表示游戏的版本等级;“退出”按钮单击时推出对弈比赛。

2.系统概述

本程序分为两类ChessBoardFrame类和ChessBoardPanel类

游戏开始弹出对话框显示游戏开始途中如果某一方认输便可点击认输按钮之后显示黑棋/白棋认输白棋/黑棋获胜点击退出按钮即可退出整个程序

4.系统功能结构设计

 

 

 

自定义类说明

类名:

ChessBoardFrame

作用:

显示五子棋游戏的主界面在整个屏幕中的位置与大小

继承的父类:

JFrame

实现接口:

publicclassChessBoardFrameextendsJFrame

{

}

//自定义一个继承于Jframe的类用于获取五子棋背景图的大小,在整个屏幕上的显示位置

类名:

ChessBoardPanel

作用:

实现五子棋的各个功能,通过画直线的成员函数画出棋盘、通过判断函数对鼠标的判断以保证正确落子、在判断函数中还包括了对输与赢的判断、加上清屏函数、每次重新开始时进行清屏。

在此类中主要使用了JAVA本身所具有的一些功能,如:

鼠标适配器、鼠标单击时间的捕捉、窗口重绘、颜色填充等功能。

继承的父类:

JPanel

实现接口:

publicclassChessBoardPanelextendsJPanel

{

}

//完成五子棋的主要功能

5.主要界面

 

6.使用说明

点击开始游戏便可在棋盘进行游戏如其中一方获胜游戏会自动弹出结果若想继续游戏便可再次点击开始游戏如退出游戏点击“退出”再选定“是”便可退出游戏途中若有一方认输点击认输按钮即可

附件(程序清单)

ChessBoardFrame类

importjava.awt.Color;

importjava.awt.Dimension;

importjava.awt.Toolkit;

importjavax.swing.JFrame;

publicclassChessBoardFrameextendsJFrame{

publicChessBoardFrame(){

//设置标题

this.setTitle("五子棋");

intwidth=500;

intheight=456;

//窗口起点坐标

Toolkitkit=Toolkit.getDefaultToolkit();

Dimensiondimension=kit.getScreenSize();

doublescreenWidth=dimension.getWidth();

doublescreenHeight=dimension.getHeight();

intx=(int)(screenWidth-width)/2;

inty=(int)(screenHeight-height)/2;

//设置窗口大小和位置

this.setBounds(x,y,width,height);

//设置窗口大小不可改变

this.setResizable(false);

//设置默认关闭选项

this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

//将面板放于窗口中

setBackground(Color.pink);

this.add(newChessBoardPanel());

this.setVisible(true);

}

publicstaticvoidmain(String[]args){

newChessBoardFrame();

}

}

ChessBoardPanel类

importjava.awt.Color;

importjava.awt.Cursor;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.event.MouseAdapter;

importjava.awt.event.MouseEvent;

importjava.awt.event.MouseMotionAdapter;

importjava.io.File;

importjava.io.IOException;

importjavax.imageio.ImageIO;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

publicclassChessBoardPanelextendsJPanel{

//保存棋子,1黑棋,-1白棋,0没有棋

int[][]arr=newint[19][19];

//是否开始游戏

booleanstart;

//棋子

intchess=1;

publicChessBoardPanel(){

this.addMouseListener(ma);

this.addMouseMotionListener(mma);

}

MouseMotionAdaptermma=newMouseMotionAdapter(){

Override

publicvoidmouseMoved(MouseEvente){

intx=e.getX();

inty=e.getY();

if((x>=400&&x<=470&&y>=50&&y<=80)

||(x>=400&&x<=470&&y>=250&&y<=280)

||(x>=400&&x<=470&&y>=300&&y<=330)

||(x>=400&&x<=470&&y>=350&&y<=380)){

setCursor(newCursor(Cursor.HAND_CURSOR));

}else{

setCursor(newCursor(Cursor.DEFAULT_CURSOR));

}

}

};

//棋盘:

10,50;370,410

//开始游戏:

400,50;470,80

//认输:

400,250;470,280

//关于:

400,300;470,330

//退出:

400,350;470,380

MouseAdapterma=newMouseAdapter(){

Override

publicvoidmouseClicked(MouseEvente){

intx=e.getX();

inty=e.getY();

if(start==true){

if(x>=10&&x<=370&&y>=50&&y<=410){

inti=(x-10)/20;

intj=(y-50)/20;

if((x-10)%20>10){

i=i+1;

}

if((y-50)%20>10){

j=j+1;

}

if(arr[i][j]==0){

arr[i][j]=chess;

}

//判断输赢

if(isWin(chess)==true){

if(chess==1){

JOptionPane.showMessageDialog(null,"黑棋获胜");

}else{

JOptionPane.showMessageDialog(null,"白棋获胜");

}

start=false;

}

//改棋子颜色

chess=chess*(-1);

}

}

//开始游戏

if(x>=400&&x<=470&&y>=50&&y<=80){

//清盘

for(inti=0;i<19;i++){

for(intj=0;j<19;j++){

arr[i][j]=0;

}

}

start=true;

JOptionPane.showMessageDialog(null,"游戏开始!

");

}

//认输

if(x>=400&&x<=470&&y>=250&&y<=280){

intoption=JOptionPane.showConfirmDialog(null,"确定要认输吗?

",

"确认框",JOptionPane.YES_NO_OPTION);

if(option==0){

if(chess==1){

JOptionPane.showMessageDialog(null,"黑棋认输,白棋胜");

}else{

JOptionPane.showMessageDialog(null,"白棋认输,黑棋胜");

}

start=false;

}

}

//关于

if(x>=400&&x<=470&&y>=300&&y<=330){

JOptionPane.showMessageDialog(null,"JAVA简易五子棋程序");

}

//退出

if(x>=400&&x<=470&&y>=350&&y<=380){

intoption=JOptionPane.showConfirmDialog(null,"确定要退出吗?

",

"对话框",JOptionPane.YES_NO_OPTION);

if(option==0){

//退出

System.exit(0);

}

}

}

};

Override

publicvoidpaint(Graphicsg){

super.paint(g);

//画游戏开始外框

g.drawLine(400,50,470,50);

g.drawLine(400,80,470,80);

g.drawLine(400,50,400,80);

g.drawLine(470,50,470,80);

//画认输外框

g.drawLine(400,250,470,250);

g.drawLine(400,280,470,280);

g.drawLine(400,250,400,280);

g.drawLine(470,250,470,280);

//画关于外框

g.drawLine(400,300,470,300);

g.drawLine(400,330,470,330);

g.drawLine(400,300,400,330);

g.drawLine(470,300,470,330);

//画退出外框

g.drawLine(400,350,470,350);

g.drawLine(400,380,470,380);

g.drawLine(400,350,400,380);

g.drawLine(470,350,470,380);

//鼠标事件框文字

g.drawString("游戏开始",410,70);

g.drawString("认输",420,270);

g.drawString("关于",420,320);

g.drawString("退出",420,370);

//绘制棋盘

//横向

for(inti=0;i<19;i++){

g.drawLine(10,50+i*20,370,50+i*20);

}

//纵向

for(inti=0;i<19;i++){

g.drawLine(10+i*20,50,10+i*20,410);

}

for(inti=0;i<19;i++){

for(intj=0;j<19;j++){

if(arr[i][j]!

=0){

if(arr[i][j]==1){

g.setColor(Color.BLACK);

g.fillOval(3+i*20,43+j*20,14,14);

g.drawOval(3+i*20,43+j*20,14,14);

}else{

g.setColor(Color.WHITE);

g.fillOval(3+i*20,43+j*20,14,14);

g.setColor(Color.BLACK);

g.drawOval(3+i*20,43+j*20,14,14);

}

}

}

}

//让窗口重绘

this.repaint();

}

//判断输赢

//横向

publicbooleanisH(intchess){

for(inti=0;i<19;i++){

for(intj=2;j<17;j++){

if(arr[i][j-2]==chess&&arr[i][j-1]==chess

&&arr[i][j]==chess&&arr[i][j+1]==chess

&&arr[i][j+2]==chess){

returntrue;

}

}

}

returnfalse;

}

//纵向

publicbooleanisV(intchess){

for(inti=2;i<17;i++){

for(intj=0;j<19;j++){

if(arr[i-2][j]==chess&&arr[i-1][j]==chess

&&arr[i][j]==chess&&arr[i+1][j]==chess

&&arr[i+2][j]==chess){

returntrue;

}

}

}

returnfalse;

}

//东南

publicbooleanisEastSouth(intchess){

for(inti=2;i<17;i++){

for(intj=2;j<17;j++){

if(arr[i-2][j-2]==chess&&arr[i-1][j-1]==chess

&&arr[i][j]==chess&&arr[i+1][j+1]==chess

&&arr[i+2][j+2]==chess){

returntrue;

}

}

}

returnfalse;

}

//东北

publicbooleanisEastNorth(intchess){

for(inti=2;i<17;i++){

for(intj=2;j<17;j++){

if(arr[i-2][j+2]==chess&&arr[i-1][j+1]==chess

&&arr[i][j]==chess&&arr[i+1][j-1]==chess

&&arr[i+2][j-2]==chess){

returntrue;

}

}

}

returnfalse;

}

publicbooleanisWin(intchess){

if((isH(chess)==true)||(isV(chess)==true)

||(isEastSouth(chess)==true)||(isEastNorth(chess)==true)){

returntrue;

}

returnfalse;

}

}

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

当前位置:首页 > 经管营销 > 经济市场

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

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