您的当前位置:首页正文

JAVA课设报告

2022-09-26 来源:九壹网
封面

《Java语言程序设计》

课程设计报告

分 院: 电 信 分 院 班 级: 电子商务2班 _ * 名: *** 学 号: ************** 指导教师: *** 课设时间: 2011-12-20 至2011-12-31

二O一一 年 十 二月 二十 日

10电商2班26号黄永强 Java课程设计报告

目录

目录 ................................................................................................ - 1 - 一、课程设计要求 ........................................................................ - 2 - 二、设计步骤 ................................................................................ - 2 - 三、设计正文 ................................................................................ - 5 - 1、源代码: ............................................................................ - 5 - 2、运行结果: ......................................................................- 15 - 四、课程设计心得体会 ..............................................................- 19 - 五、参考文献 ..............................................................................- 20 -

- 1 -

10电商2班26号黄永强 Java课程设计报告

《Java语言程序设计课程设计》

一、课程设计要求

设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择落子的先后顺序 2.重置棋盘 3.刷新重新开始 4.退出提示

并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。 最后判断某一方是否为五子连珠。

实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。

(2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);

二、设计步骤

五子棋游戏的功能:

1.鼠标点击棋盘时可以在相应的位置显示棋子;

2.可以判断游戏是否结束,判断是黑方或白方获得胜利; 3.可以设置游戏时间,超时及判定为输;

一、首先设置游戏的背景图片

利用BufferedImage和ImageIO来添加图片作为背景

- 2 -

10电商2班26号黄永强 Java课程设计报告

然后绘制棋盘,设置的棋盘是19*19横线、纵线相距20像素,高和宽各为360像素利用for循环来实现。

二、鼠标在棋盘上点击,显示黑设或白色棋子

黑色棋子:用一个实心的黑色圆来表示;

白色棋子:用一个空心的黑色圆和一个实心的白色圆表示;

三、保存之前下过的棋子

通过一个二维的数组来保存之前下过的棋子;

保存之前下过棋子的坐标,0表示没棋子,1黑子,2白子 int[][] allChess=new int[19][19];

四、判断胜负,是白方胜还是黑方胜

五个方向的判断:1、横向 2、纵向3、右上方+左下方4、右下方+左上方 依据五子棋的游戏规则,判断同一色棋子是否连成五个

五、解决屏幕闪烁问题

通过双缓冲技术来解决屏幕闪烁问题

- 3 -

10电商2班26号黄永强 Java课程设计报告

BufferedImage bi=new BufferedImage(500,500,BufferedImage.TYPE_4BYTE_ABGR); Graphics g2=bi.createGraphics();

六、实现各个按钮的功能

开始游戏:重新开始游戏; 其中重新开始游戏说需要的操作:

1、

把棋盘清空;2、将游戏信息改为初始状态;

游戏设置:设置游戏时间;

退出:退出程序;

认输:表示一方投子认输;

- 4 -

10电商2班26号黄永强 Java课程设计报告

三、设计正文

1、源代码:

import java.awt.*; import java.awt.event.*;

import java.awt.event.InputEvent; import java.io.*; import javax.imageio.*; import javax.swing.*;

import java.awt.image.BufferedImage; public class FiveChessFrame {

public static void main(String []args) { } }

class MyChessFrame extends JFrame implements MouseListener,Runnable {

//保存棋子坐标

MyChessFrame my=new MyChessFrame();

int x=0;

int y=0;

//保存之前下过棋子的坐标,0表示没棋子,1黑子,2白子 int[][] allChess=new int[19][19]; //标识是黑子还是白子下下一步 boolean isBlack=true; //判断游戏是否继续 boolean canPlay=true; //信息指示

String message=\"游戏开始,黑方先下\";

- 5 -

10电商2班26号黄永强 Java课程设计报告

//保存拥有多少时间(秒) int maxTime=0; //倒计时线程类

Thread t=new Thread(this); public MyChessFrame() {

//取得屏幕的宽度

int height=Toolkit.getDefaultToolkit().getScreenSize().height; //取得屏幕的高度

int width=Toolkit.getDefaultToolkit().getScreenSize().width; //设置标题

this.setTitle(\"五子棋\"); //设置窗体大小

this.setSize(500,500); //设置窗体是不可以改变大小 this.setResizable(false); //设置窗体关闭,同时关闭程序

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体出事显示位置

this.setLocation((width-500)/2,(height-500)/2); this.addMouseListener(this); //为窗体加入监听器

this.addMouseListener(this); //设置窗体是否显示 this.setVisible(true); t.start(); t.interrupt();

}

public void paint(Graphics g) {

//利用双缓冲技术解决屏幕闪烁问题 BufferedImage

bi=new

BufferedImage(500,500,BufferedImage.TYPE_4BYTE_ABGR);

- 6 -

10电商2班26号黄永强 Java课程设计报告

Graphics g2=bi.createGraphics(); //背景图片

BufferedImage image=null; try {

image=ImageIO.read(new

File(\"D:/

/3b0fb53827f9fddfd562258c.jpg\"));

}catch(IOException e) { }

g2.drawImage(image,0,0,this); //输出标题

g2.setColor(Color.BLACK);

g2.setFont(new Font(\"宋体\g2.drawString(\"五子棋:\"+message,60,50); //输出时间信息

g2.setFont(new Font(\"宋体\g2.drawString(\"黑方时间:\g2.drawString(\"白方时间:\//绘制棋盘

for(int i=0;i<19;i++) { }

g2.drawLine(10,70+20*i,370,70+20*i); g2.drawLine(10+20*i,70,10+20*i,430); e.printStackTrace();

//标注点位

g2.fillOval(68,128,4,4); g2.fillOval(308,128,4,4); g2.fillOval(308,368,4,4); g2.fillOval(68,368,4,4); g2.fillOval(308,248,4,4); g2.fillOval(188,128,4,4);

- 7 -

10电商2班26号黄永强 Java课程设计报告

}

public void mousePressed(MouseEvent e)//监听鼠标按下事件 {

- 8 -

g2.fillOval(68,248,4,4); g2.fillOval(188,368,4,4); g2.fillOval(188,248,4,4); for(int i=0;i<19;i++) { }

g.drawImage(bi,0,0,this);

for(int j=0;j<19;j++) { }

if(allChess[i][j]==1) { }

if(allChess[i][j]==2) { }

//白子

int tempX=i*20+10; int tempY=j*20+70; g2.setColor(Color.WHITE);

g2.fillOval(tempX-7,tempY-7,14,14); g2.setColor(Color.BLACK);

g2.drawOval(tempX-7,tempY-7,14,14); //黑子

int tempX=i*20+10; int tempY=j*20+70; g2.setColor(Color.BLACK);

g2.fillOval(tempX-7,tempY-7,14,14); g2.drawOval(tempX-7,tempY-7,14,14);

10电商2班26号黄永强 Java课程设计报告

if(canPlay==true) {

x=(x-10)/20; y=(y-70)/20;

if(allChess[x][y]==0) {

{ } else { }

//判断棋子是否五连,游戏是否结束 boolean win=this.Win(); if(win==true) {

JOptionPane.showMessageDialog(this,\"游戏结束allChess[x][y]=2; isBlack=true; message=\"轮到黑方下\"; allChess[x][y]=1; isBlack=false; message=\"轮到白方下\"; if(isBlack==true)

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

if(x>=10&&x<=370&&y>=70&&y<=430) {

\"+(allChess[x][y]==1?\"黑方\":\"白方\")+\"获胜\");

} else

- 9 -

}

canPlay=false;

你?\");

10电商2班26号黄永强 Java课程设计报告

{

}

}

}

this.repaint();//重新执行paint的方法 //System.out.println(isBlack);

//System.out.println(\"点击位置:X-->\"+e.getX()); //System.out.println(\"点击位置:Y-->\"+e.getY()); //游戏开始

if(e.getX()>=380&&e.getX()<=490&&e.getY()>=60&&e.getY()<=100) {

int result=JOptionPane.showConfirmDialog(this,\"是否重新开始游戏 if(result==0) { for(int i=0;i<19;i++) { for(int j=0;j<19;j++) { allChess[i][j]=0;

}

}

message=\"黑方先行\"; isBlack=true;

}

}

//游戏设置

if(e.getX()>=380&&e.getX()<=490&&e.getY()>=130&&e.getY()<=170) { String input=JOptionPane.showInputDialog(\"请输入时间(分钟)\"); maxTime=Integer.parseInt(input)*60;

- 10 -

10电商2班26号黄永强 Java课程设计报告

} //认输

if(e.getX()>=380&&e.getX()<=490&&e.getY()>=370&&e.getY()<=410) {

int result=JOptionPane.showConfirmDialog(this,\"是否重新开始游戏

你?\"); \"); \");

}

public void mouseReleased(MouseEvent e) //监听鼠标抬起事件 { }

public void mouseEntered(MouseEvent e) //监听鼠标进入事件

- 11 -

if(result==0) {

if(isBlack) {

JOptionPane.showMessageDialog(this,\"黑方认输,游戏结束

} else {

JOptionPane.showMessageDialog(this,\"白方认输,游戏结束

}

}

}

canPlay=false;

//退出游戏 { }

JOptionPane.showMessageDialog(this,\"游戏结束\"); System.exit(0);

if(e.getX()>=380&&e.getX()<=490&&e.getY()>=430&&e.getY()<=470)

10电商2班26号黄永强 Java课程设计报告

{ }

public void mouseExited(MouseEvent e) //监听鼠标离开事件 { }

public void mouseClicked(MouseEvent e) //监听鼠标点击事件 { }

private boolean Win() {

boolean MyWin=false; //横向判断 int i=1; int count=1;

while(allChess[x][y]==allChess[x+i][y]) { } i=1;

while(allChess[x][y]==allChess[x-i][y]) { }

if(count>=5) { }

//纵向判断 int i2=1; int count2=1;

while(allChess[x][y]==allChess[x][y+i2])

- 12 -

count++; i++;

count++; i++;

MyWin=true;

10电商2班26号黄永强 Java课程设计报告

{ } i2=1;

while(allChess[x][y]==allChess[x][y-i2]) { }

if(count2>=5) { }

//斜方向判断(右下+左上) int i3=1; int count3=1;

while(allChess[x][y]==allChess[x+i3][y+i3]) { } i3=1;

while(allChess[x][y]==allChess[x-i3][y-i3]) { }

if(count3>=5) { }

//斜方向判断(右上+左下)

- 13 -

count2++; i2++;

count2++; i2++;

MyWin=true;

count3++; i3++;

count3++; i3++;

MyWin=true;

10电商2班26号黄永强 Java课程设计报告

}

}

public void run() { }

int i4=1; int count4=1;

while(allChess[x][y]==allChess[x+i4][y-i4]) { } i4=1;

while(allChess[x][y]==allChess[x-i4][y+i4]) { }

if(count4>=5) { }

return MyWin;

MyWin=true; count4++; i4++; count4++; i4++;

- 14 -

10电商2班26号黄永强 Java课程设计报告

2、运行结果:

(1)输赢的判断 A、横向

B、纵向

- 15 -

10电商2班26号黄永强 Java课程设计报告

C、右上方+左下方

D、右下方+左上方

- 16 -

10电商2班26号黄永强 Java课程设计报告

(2)游戏的重置

- 17 -

10电商2班26号黄永强 Java课程设计报告

(3)游戏退出

- 18 -

10电商2班26号黄永强 Java课程设计报告

四、课程设计心得体会

通过这次的课程设计,我不仅拓宽了自己的知识面,还在实践过程中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时我的专业水平也有了很大的进步。

同时,在软件开发方面也累积了不少经验,对的知识重要性的认识更深了。通过设计过程的锻炼,自己分析问题和解决问题的能力都得到了锻炼和提高,完善了自己的知识结构,加深了对所学知识的理解。在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。在学与做的过程中自身的努力以及相关图书资料的帮助,对JAVA理解也从能够使用提高到了熟练使用,对程序开发的一般过程和对数据库知识的运用也有了进一步的了解。

通过课程设计,我学习到不少的JAVA编程语言的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题,甚至错误。这些我会在以后的工作学习和实践中加以改进和提高。

通过这次课程设计使我获得了很多东西。其一编程的重要步骤是分析。分析问题的本身和现实要求。分析过程中采用画图的方法能使我的思路特别清晰。拿到一个题目不要仅仅局限在一种思想上,要尽量的多尝试其他的做法,然后比较,集各家之所长,拿出最优秀的程序来。其二,也是最重要的就是我们应当打开我们的视野,不要仅仅局限于电脑方面,要放眼整个世界。各种语言仅今年是我们手中的工具,我们应当从我们生活的这个世界中去领悟解决问题的思想和方法。因此我在今后的学习中,要加强对思想的培养和积累,打破学科界限,吸取各家思想,将各门课程融会贯通,从而从中获得益处。

- 19 -

10电商2班26号黄永强 Java课程设计报告

五、参考文献

[1] 谭浩强编著,java程序设计,[M],清华大学出版社,1991年7月 [2] 姜仲秋编著,java程序设计, [M],南京大学出版社,1998年1月 [3] 刘瑞挺主编,计算机二级教程, [M],南开大学出版社,1996年10月 [4] 陈朔鹰编著,java程序设计基础教程, [M],兵器工业出版社,1994年9月 [5] 李虹主编,java程序设计,[M],南京大学出版社,2010年2月

- 20 -

因篇幅问题不能全部显示,请点此查看更多更全内容