JAVA拼图大作业实验报告.docx

上传人:b****8 文档编号:29767852 上传时间:2023-07-26 格式:DOCX 页数:67 大小:337.88KB
下载 相关 举报
JAVA拼图大作业实验报告.docx_第1页
第1页 / 共67页
JAVA拼图大作业实验报告.docx_第2页
第2页 / 共67页
JAVA拼图大作业实验报告.docx_第3页
第3页 / 共67页
JAVA拼图大作业实验报告.docx_第4页
第4页 / 共67页
JAVA拼图大作业实验报告.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

JAVA拼图大作业实验报告.docx

《JAVA拼图大作业实验报告.docx》由会员分享,可在线阅读,更多相关《JAVA拼图大作业实验报告.docx(67页珍藏版)》请在冰豆网上搜索。

JAVA拼图大作业实验报告.docx

JAVA拼图大作业实验报告

 

2016秋天学期《Java语言》大作业

 

系统说明报告

 

编制:

岳晓飞(20153280)

 

专业计算机科学与技术

 

审察:

班级信1501-2

 

1项目目的与意义3

 

1.1项目背景说明3

 

1.2项目目的与意义3

 

2软件开发环境与技术说明4

 

2.1软件开发环境4

 

2.2软件开发技术描绘4

 

3系统剖析与设计5

 

3.1项目需求剖析说明5

 

3.2系统设计方案5

 

4系统源代码8

 

4.1系统源代码文件说明8

 

4.2源代码8

 

5系统使用说明书41

 

6参照资料49

 

7附件说明49

 

1项目目的与意义

 

1.1项目背景说明

 

JAVA语言2016年学期期末大作业-44拼图游戏的设置

 

1.2项目目的与意义

 

目的:

实现简单的4X4JAVA拼图游戏的简单功能,能够进行用户的登

 

录和拼图游戏的达成,给用户以优秀的游戏体验,再加入更多个性化

 

的内容

 

意义:

 

从用户角度,设计一个简单可是十分考验人的小型拼图游戏,让人们在简单方便的操作中舒缓自己一天的疲倦,和朋友一同进行挑战,不停地打破,显现游戏的漂亮,实现游戏的价值

 

从开发者角度,这是对我半年JAVA语言学习的检测,同时我也自学了很多东西,比方数据库的链接,SQL语句和JAVA的各样函数,让我能够真实的领会到开发一个项目的过程和需要付出的不懈努力,也让我享遇到了自己尽全力达成一个项目的过程和达成后的愉悦。

 

2软件开发环境与技术说明

 

2.1软件开发环境

 

JAVA开发环境-Eclipse

 

JAVA支持包:

importjava.awt.*;

 

importjava.awt.event.ActionEvent;

 

importjava.awt.event.ActionListener;

 

importjava.sql.*;

 

importjavax.swing.*;

 

mysql-connector-java-5.1.40-bin.jar(MySql驱动jar

 

包)

 

数据库环境:

MySql数据库(使用的是Navicat图形界面)

 

2.2软件开发技术描绘

 

1.拼图游戏界面设计主要使用了JAVA的GUI图形界面,主登录界面

 

和账号注册界面使用的是流式FlowLayOut布局进行登录框和按钮的

 

设置,而拼图游戏界面则是使用的网格式GridFlowOut布局.

 

2.经过连结MySql数据库,(名称:

user),创立数据表user_info

 

列名称为:

username(账号),password(密码),score(过关时间),

 

Count(过关所用步数);实现了游戏的账号注册和登录功能,以及每

 

个账号成绩的记录和储藏,并能够再实行界面中显示每个用户的游戏

 

记录

 

3.经过Timer类实现了拼图游戏计时功能

 

4.图片储存在项目文件夹下image文件夹中,经过名字的奇妙设置实现了打乱图片次序,切换图片,判断拼图能否达成。

 

3系统剖析与设计

 

3.1项目需求剖析说明

 

立足于用户的角度,第一,我们实现了个性化的服务,即账号的注册和登录功能,不一样的用户能够进履行用,使游戏具备了最重要的竞技性,只有这样才不会让用户感觉无聊,并且我们实现了4X4拼图游戏的基本功能,并且配有游戏的时间的所用步骤,能够及时地反应给游戏用户,让用户清楚地认识到自己的分数,同时还能够记录游戏过关的时间和步数,知足了用户的冲击记录的心理需求,调高了游戏的可玩性,不会被用户迅速地玩腻。

 

3.2系统设计方案

 

从用户的角度,我们需要有以下数据种类

 

数据库user

 

数据表user_info

 

列名称种类长度数据

 

usernamevarchar255JAVA2016

 

passwordvarchar255Java2016

 

score

varchar

255

01:

30

count

int

11

56

 

username和password是用户的必有属性,能够进行登录和注册

 

score和count即用户所用的时间和步骤,两重分数完满体现了每个

 

人的实力

 

从系统设计角度

 

第一,

 

最主要的是实现最最基本的游戏功能,即设计拼图游戏的中心程序

 

1.拼图表格式的布局,简单让我想到使用按钮进行网格式布局

 

2.为每个按钮增添背景图片(这些背景图片需要经过预先的裁剪),

 

3.需要进行按钮背景图片的打乱,简单想到使用随机数RANDOM()函数,而后会想到在背景图片的名字上做文章来进行背景图片的

 

随机设置

 

4.我们把16个按钮储存在数组中,便于操作,但是数组最大的方便之处在于他的随机储存,我们能够经过下标接见随意一个按钮,于是想到把图片的名字与下标联系在一同,解决了图片的随机排

 

 

5.怎样设置背景图片?

我们需要有图片的路径,而图片的路径只是是图片名字的不一样,因此我们将固定的图片储存路径寄存到字符

 

串数组中,而后经过循环进行图片的设置,SetIcon()函数能够做到

 

这全部.

 

6.切换下一张,本质仍是背景图片的变化,因此我们持续在图片名字上做文章,设置一个表示数字代表是第几张的图片,把他设置到图片名字里面。

而后切换下一张被简化为改变一个数字(编程

 

思路要清楚),数字变即路径变,也就是背景图发生变化

 

总结:

拼图-》背景图片的变化-》背景图片路径的变化-》图片名字的变化

 

接下来,

 

实现一个项目的登录和注册,我们需要数据库,而游戏的记录也需要数据库来寄存,因此我么一定第一确定自己的数据库系统,如上所示,而后就是实现注册,将数据写入数据库和登录,在数据库中进行般配,游戏记录的写入和读取。

在游戏成功时,获得当时的时间和步数,写

 

入对应的用户的数据表中,而后另一个界面中设置表格,从数据库中读守信息,而后写入到表格里面进行显现最后,

 

我考虑了游戏的一些详细实现,游戏界面的设计,怎样才能让用户看得舒心,玩的自在,和暂停等适用小功能,无穷知足用户的需求。

 

以上,就是我在设计拼图游戏是系统设计方案,此后还会不停地完美自己的程序!

 

4系统源代码

 

4.1系统源代码文件说明

 

拼图游戏源代码构造

 

-分为4个窗口介绍

 

1.Frame1主登录窗口

 

(属性)包含3个标签组件,4个按钮组件,2个文本域组件和1个布局,4个按钮的鼠标点击监听事件

 

(方法)包含1个函数来进行组件的增添和布局的设置,1个函数进行数据库的连结和读取,4个监听类进行事件的编写

 

2.Frame2注册窗口

 

(属性)包含2个按钮,4个标签和3个文本域以及2个按钮的

 

点击事件

 

(方法)包含1个函数进行组件的增添和布局的设置,1个函数进行数据库的连结和写入,2个监听类进行点击事件的编写

 

3.Frame3历史记录窗口

 

(属性)包含1个表格

 

(方法)包含1个函数进行表格的属性设置和数据库数据的读

 

取并写入到表格中

 

4.Frame4游戏窗口

 

(属性)包含4个按钮,3个标签,16个按钮和85张图片

 

(方法)包含1个函数进行组件的增添和布局的设置,4个按钮的点击事件函数,1个计时器的计时势件

 

其余:

还有每个窗口中的字体的设置,面板地点的设置,等

 

4.2源代码

 

importjava.awt.*;

 

importjava.awt.event.ActionEvent;

 

importjava.awt.event.ActionListener;

 

importjava.sql.*;

 

importjavax.swing.*;

 

publicclassTest{

 

MyListenner1myListenner1=newMyListenner1();MyListenner2myListenner2=newMyListenner2();MyListenner3myListenner3=newMyListenner3();MyListenner4myListenner4=newMyListenner4();MyListenner5myListenner5=newMyListenner5();

MyListennerFanHuimyListenner18=newMyListennerFanHui();

 

JFrameframe=newJFrame();//

登录主窗口

JFrameframe2=newJFrame();//

注册窗口

JFrameframe5=newJFrame();//

注册窗口

 

JPanelpane00=newJPanel();//历史记录

 

JPanelpane0=newJPanel();

 

JPanelpane1=newJPanel();

 

JPanelpane2=newJPanel();

 

JPanelpane3=newJPanel();

 

JPanelpane4=newJPanel();

 

JPanelpane5=newJPanel();//

注册界面

JPanelpane6=newJPanel();//

注册界面

JPanelpane7=newJPanel();//

注册界面

JPanelpane8=newJPanel();//

返回按钮

JButtonbutton7=newJButton("

返回");

 

JLabellab=newJLabel("☆简略拼图游戏☆");

 

//注册界面

 

JLabellab1=newJLabel("游戏开始");

 

//登录界面/注册

 

JLabellab7=newJLabel("☆账号注册界面☆");

 

JLabellab2=newJLabel("账号:

");//注册

 

JLabellab3=newJLabel("密码:

");//zhuce

 

JLabellab4=newJLabel("确认密码:

");

 

JTextFieldtext1=newJTextField(10);//注册账号

 

JPasswordFieldtext2=newJPasswordField(10);//注册密码JPasswordFieldtext3=newJPasswordField(10);JButtonbutton6=newJButton("注册");

 

JLabellab5=newJLabel("

 

账号");//

 

登录

 

JLabellab6=newJLabel("

密码");//denglu

 

JButtonbutton2=newJButton("进入游戏");

 

JButtonbutton1=newJButton("注册账号");

 

JButtonbutton3=newJButton("游戏记录");

 

JButtonbutton5=newJButton("退出游戏");

 

JTextFieldtext4=newJTextField(10);//登录账号

 

JPasswordFieldtext5=newJPasswordField(10);//登录密码

 

GridLayoutlay1=newGridLayout(2,2,5,3);

 

GridLayoutlay2=newGridLayout(4,2);

 

FlowLayoutlay3=newFlowLayout(FlowLayout.LEFT,15,20);

 

Fontfont1=newFont("楷体",Font.BOLD,25);

 

Fontfont0=newFont("楷体",Font.BOLD,30);

 

intnum=0;

 

intCount=0;

 

inta=0,b=0,c=0,d=0;

 

JFrameframe4=newJFrame();

 

MyListenner1_1mylistenner11=newMyListenner1_1();

 

MyListenner2_1mylistenner12=newMyListenner2_1();

 

MyListenner3_1mylistenner13=newMyListenner3_1();

 

MyListenner4_1mylistenner14=newMyListenner4_1();

 

MyListenner5_1mylistenner15=newMyListenner5_1();

 

MyTimerlisternermytimerlisterner=newMyTimerlisterner(frame4);

MyListennerJilumylistenner16=newMyListennerJilu();

 

JPanelpane1_1=newJPanel();

 

JPanelpane1_2=newJPanel();

 

JPanelpane1_3=newJPanel();

 

JPanelpane1_4=newJPanel();

 

JPanelpane1_5=newJPanel();

 

JPanelpane1_6=newJPanel();

 

Timertimer;//计时器

 

//游戏界面按钮

 

JButtonbutton1_1=newJButton("开始");

 

JButtonbutton1_2=newJButton("下一张");

 

JButtonbutton1_3=newJButton("暂停");

 

JButtonbutton1_4=newJButton("返回");

 

JButtonEmptyButton=newJButton();

 

JButtonbutton_1[][]=newJButton[4][4];

 

//游戏界面标签

 

JLabelYuanTu=newJLabel();

 

JLabelBuShu=newJLabel();

 

JLabelShiJian=newJLabel();

 

JLabelBuShu_num=newJLabel("步数:

"+Count);

 

JLabelShiJian_num=newJLabel();

 

JLabellabel_time=newJLabel("时间:

"+"00:

00");

 

GridLayoutTuLay=newGridLayout(4,4,0,0);

 

FlowLayoutLeftLay=newFlowLayout(FlowLayout.LEFT,0,15);

 

voidjiLu(){

 

intnumber=0;

 

String[]colname={"编号","账号","时间","步数

 

","日期"};

 

String[][]data=newString[10][5];

 

Connectionconn=ConnectSql();

 

Stringsql="selectusername,score,countfrom

 

user_info";

 

try{

 

Statementstmt=conn.createStatement();

 

ResultSetrs=stmt.executeQuery(sql);

 

while(rs.next()){

 

Stringusername=rs.getString

(1);

 

Stringscore=rs.getString

(2);

 

intcount=rs.getInt(3);

 

Stringnum=""+number;

 

Stringcount1=""+count;

 

if(count!

=0){

 

data[number][0]=num;

 

data[number][1]=username;

 

data[number][2]=score;

 

data[number][3]=count1;

 

data[number][4]="";

 

number++;

 

}

 

}

 

}catch(SQLExceptione1){

 

//TODO自动生成的catch块

 

e1.printStackTrace();

 

}

 

JTabletable=newJTable(data,colname);

 

table.setEnabled(false);

 

JScrollPanejsPane=newJScrollPane(table);pane00.add(jsPane,BorderLayout.CENTER);frame5.add(pane00);

 

}

 

privateString[][]order(){

 

String[][]exactnessOrder=newString[4][4];

 

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

 

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

 

exactnessOrder[i][j]

="image/"+

num+i+j+

 

".jpg";

 

}

 

}

 

returnexactnessOrder;

 

}

 

//随机生成无序的图片给每个按钮

 

privateString[][]reorder(){

 

String[][]exactnessOrder=newString[4][4];

 

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

 

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

 

exactnessOrder[i][j]

="image/"+

num+i+

j+

 

".jpg";

 

}

 

}

 

String[][]stochasticOrder=newString[4][4];for(inti=0;i<4;i++){

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

 

while(stochasticOrder[i][j]==null){

 

intr=(int)(Math.random()*4);

 

intc=(int)(Math.random()*4);

 

if(exactnessOrder[r][c]!

=null){

 

stochasticOrder[i][j]=

 

exactnessOrder[r][c];

 

exactnessOrder[r][c]=null;

 

}

 

}

 

}

 

}

 

returnstochasticOrder;

 

}

 

//判断游戏能否达成

 

publicBooleanisSuccess(){

 

intflag=1;

 

String[][]exactnessOrder=order();

 

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

 

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

 

if(!

button_1[i][j].getIcon().equals(exactnessOrder[i][j]

 

)){

 

flag=0;

 

}

 

}

 

}

 

if(flag==0){

 

returnfalse;

 

}else{

 

returntrue;

 

}

 

}

 

//数据库连结函数

 

ConnectionConnectSql(){

 

Stringurl=

 

ing=utf-8&useSSL=false";

 

Stringusername="root";

 

Stringpassword="153478";//加载驱动程序以连结

 

数据库

 

try{

 

Class.forName("com.mysql.jdbc.Driver");

 

return

 

DriverManager.getConnection(url,username,password);

 

}

 

//捕捉加载驱动程序异样

 

catch(ClassNotFoundExceptioncnfex){

 

System.err.println(

 

"装载JDBC/ODBC驱动程序失败。

");cnfex.printStackTrace();

 

}catch(SQLExceptione){

 

System.err.println(

 

"没法连结到数据库。

");e.printStackTrace();

 

}

 

returnnull;

 

}

 

voidCreateTable(){

 

Connectionconn=ConnectSql();

 

Stringsql="createtableuser_info(usernamevarchar(255),passwordvarchar(255),scoreint);";

Statementstmt;

 

try{

 

stmt=conn.createStatement();

 

stmt.execute(sql);

 

}catch(SQLExceptione){

 

//TODO自动生成的catch块

 

e.printStackTrace();

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

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1