1、JAVA拼图大作业实验报告2016秋天学期 Java语言大作业系统说明报告编制:岳晓飞( 20153280)专 业 计算机科学与技术审察:班 级 信 1501-21 项目目的与意义 31.1 项目背景说明 31.2 项目目的与意义 32 软件开发环境与技术说明 42.1 软件开发环境 42.2 软件开发技术描绘 43 系统剖析与设计 53.1 项目需求剖析说明 53.2 系统设计方案 54 系统源代码 84.1 系统源代码文件说明 84.2 源代码 85 系统使用说明书 416 参照资料 497 附件说明 491项目目的与意义1.1 项目背景说明JAVA语言 2016 年学期期末大作业 -44
2、 拼图游戏的设置1.2 项目目的与意义目的:实现简单的 4X4JAVA拼图游戏的简单功能, 能够进行用户的登录和拼图游戏的达成, 给用户以优秀的游戏体验, 再加入更多个性化的内容意义:从用户角度,设计一个简单可是十分考验人的小型拼图游戏, 让人们在简单方便的操作中舒缓自己一天的疲倦, 和朋友一同进行挑战, 不停地打破,显现游戏的漂亮,实现游戏的价值从开发者角度,这是对我半年 JAVA语言学习的检测,同时我也自学了很多东西,比方数据库的链接, SQL语句和 JAVA 的各样函数,让我能够真实的领会到开发一个项目的过程和需要付出的不懈努力, 也让我享遇到了自己尽全力达成一个项目的过程和达成后的愉悦
3、。2软件开发环境与技术说明2.1 软件开发环境JAVA开发环境 -EclipseJAVA支持包: import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.*;import javax.swing.*;mysql-connector-java-5.1.40-bin.jar(MySql 驱动 jar包)数据库环境: MySql 数据库 (使用的是 Navicat 图形界面 )2.2 软件开发技术描绘1.拼图游戏界面设计主要使用了 JAVA的 GU
4、I 图形界面,主登录界面和账号注册界面使用的是流式 FlowLayOut 布局进行登录框和按钮的设置,而拼图游戏界面则是使用的网格式 GridFlowOut 布局 .2. 经过连结 MySql 数据库, ( 名称: user) ,创立数据表 user_info列名称为: username(账号 ) ,password( 密码 ),score (过关时间) ,Count( 过关所用步数 ) ; 实现了游戏的账号注册和登录功能, 以及每个账号成绩的记录和储藏, 并能够再实行界面中显示每个用户的游戏记录3.经过 Timer 类实现了拼图游戏计时功能4.图片储存在项目文件夹下 image 文件夹中,经
5、过名字的奇妙设置实现了打乱图片次序,切换图片,判断拼图能否达成。3系统剖析与设计3.1 项目需求剖析说明立足于用户的角度,第一,我们实现了个性化的服务,即账号的注册和登录功能, 不一样的用户能够进履行用, 使游戏具备了最重要的竞技性,只有这样才不会让用户感觉无聊, 并且我们实现了 4X4 拼图游戏的基本功能, 并且配有游戏的时间的所用步骤, 能够及时地反应给游戏用户,让用户清楚地认识到自己的分数, 同时还能够记录游戏过关的时间和步数, 知足了用户的冲击记录的心理需求, 调高了游戏的可玩性,不会被用户迅速地玩腻。3.2 系统设计方案从用户的角度,我们需要有以下数据种类数据库 user数据表 us
6、er_info列名称 种类 长度 数据username varchar 255 JAVA2016password varchar 255 Java2016scorevarchar25501:30countint1156username 和 password 是用户的必有属性,能够进行登录和注册score 和 count 即用户所用的时间和步骤,两重分数完满体现了每个人的实力从系统设计角度第一,最主要的是实现最最基本的游戏功能,即设计拼图游戏的中心程序1.拼图表格式的布局,简单让我想到使用按钮进行网格式布局2.为每个按钮增添背景图片(这些背景图片需要经过预先的裁剪) ,3.需要进行按钮背景图片的
7、打乱,简单想到使用随机数 RANDOM() 函数,而后会想到在背景图片的名字上做文章来进行背景图片的随机设置4.我们把 16 个按钮储存在数组中,便于操作,但是数组最大的方便之处在于他的随机储存,我们能够经过下标接见随意一个按钮,于是想到把图片的名字与下标联系在一同,解决了图片的随机排列5.怎样设置背景图片?我们需要有图片的路径,而图片的路径只是是图片名字的不一样,因此我们将固定的图片储存路径寄存到字符串数组中,而后经过循环进行图片的设置, SetIcon()函数能够做到这全部 .6.切换下一张,本质仍是背景图片的变化,因此我们持续在图片名字上做文章,设置一个表示数字代表是第几张的图片,把他设
8、置到图片名字里面。而后切换下一张被简化为改变一个数字(编程思路要清楚) ,数字变即路径变,也就是背景图发生变化总结:拼图 -背景图片的变化 -背景图片路径的变化 -图片名字的变化接下来,实现一个项目的登录和注册, 我们需要数据库, 而游戏的记录也需要数据库来寄存,因此我么一定第一确定自己的数据库系统, 如上所示,而后就是实现注册,将数据写入数据库和登录, 在数据库中进行般配,游戏记录的写入和读取。在游戏成功时,获得当时的时间和步数,写入对应的用户的数据表中, 而后另一个界面中设置表格, 从数据库中读守信息,而后写入到表格里面进行显现最后,我考虑了游戏的一些详细实现, 游戏界面的设计, 怎样才能
9、让用户看得舒心,玩的自在,和暂停等适用小功能,无穷知足用户的需求。以上,就是我在设计拼图游戏是系统设计方案, 此后还会不停地完美自己的程序!4系统源代码4.1 系统源代码文件说明拼图游戏源代码构造-分为 4 个窗口介绍1.Frame1 主登录窗口(属性)包含 3 个标签组件, 4 个按钮组件, 2 个文本域组件和 1 个布局, 4 个按钮的鼠标点击监听事件(方法)包含 1 个函数来进行组件的增添和布局的设置, 1 个函数进行数据库的连结和读取, 4 个监听类进行事件的编写2.Frame2 注册窗口(属性)包含 2 个按钮, 4 个标签和 3 个文本域以及 2 个按钮的点击事件(方法)包含 1
10、个函数进行组件的增添和布局的设置, 1 个函数进行数据库的连结和写入, 2 个监听类进行点击事件的编写3.Frame3 历史记录窗口( 属性) 包含 1 个表格(方法)包含 1 个函数进行表格的属性设置和数据库数据的读取并写入到表格中4.Frame4 游戏窗口(属性)包含 4 个按钮, 3 个标签, 16 个按钮和 85 张图片(方法)包含 1 个函数进行组件的增添和布局的设置, 4 个按钮的点击事件函数, 1 个计时器的计时势件其余:还有每个窗口中的字体的设置,面板地点的设置,等4.2 源代码import java.awt.*;import java.awt.event.ActionEven
11、t;import java.awt.event.ActionListener;import java.sql.*;import javax.swing.*;public class Test MyListenner1 myListenner1=new MyListenner1(); MyListenner2 myListenner2=new MyListenner2(); MyListenner3 myListenner3=new MyListenner3(); MyListenner4 myListenner4=new MyListenner4(); MyListenner5 myListe
12、nner5=new MyListenner5();MyListennerFanHui myListenner18=new MyListennerFanHui();JFrame frame=new JFrame();/登录主窗口JFrame frame2=new JFrame();/注册窗口JFrame frame5=new JFrame();/注册窗口JPanel pane00=new JPanel();/ 历史记录JPanel pane0=new JPanel();JPanel pane1=new JPanel();JPanel pane2=new JPanel();JPanel pane3
13、=new JPanel();JPanel pane4=new JPanel();JPanel pane5=new JPanel();/注册界面JPanel pane6=new JPanel();/注册界面JPanel pane7=new JPanel();/注册界面JPanel pane8=new JPanel();/返回按钮JButton button7=new JButton(返回 );JLabel lab=new JLabel( 简略拼图游戏 );/注册界面JLabel lab1=new JLabel( 游戏开始 );/登录界面 / 注册JLabel lab7=new JLabel( 账
14、号注册界面 );JLabel lab2=new JLabel( 账号: );/ 注册JLabel lab3=new JLabel( 密码: );/zhuceJLabel lab4=new JLabel( 确认密码: );JTextField text1=new JTextField(10);/ 注册账号JPasswordField text2=new JPasswordField(10);/ 注册密码 JPasswordField text3=new JPasswordField(10); JButton button6=new JButton( 注册 );JLabel lab5=new JL
15、abel(账号 );/登录JLabel lab6=new JLabel(密码 );/dengluJButton button2=new JButton( 进入游戏 );JButton button1=new JButton( 注册账号 );JButton button3=new JButton( 游戏记录 );JButton button5=new JButton( 退出游戏 );JTextField text4=new JTextField(10);/ 登录账号JPasswordField text5=new JPasswordField(10);/ 登录密码GridLayout lay1=
16、new GridLayout(2,2,5,3);GridLayout lay2=new GridLayout(4,2);FlowLayout lay3=new FlowLayout(FlowLayout.LEFT,15,20);Font font1=new Font( 楷体 ,Font.BOLD,25);Font font0=new Font( 楷体 ,Font.BOLD,30);int num=0;int Count=0;int a=0,b=0,c=0,d=0;JFrame frame4=new JFrame();MyListenner1_1 mylistenner11=new MyList
17、enner1_1();MyListenner2_1 mylistenner12=new MyListenner2_1();MyListenner3_1 mylistenner13=new MyListenner3_1();MyListenner4_1 mylistenner14=new MyListenner4_1();MyListenner5_1 mylistenner15=new MyListenner5_1();MyTimerlisterner mytimerlisterner=new MyTimerlisterner(frame4);MyListennerJilu mylistenne
18、r16=new MyListennerJilu();JPanel pane1_1=new JPanel();JPanel pane1_2=new JPanel();JPanel pane1_3=new JPanel();JPanel pane1_4=new JPanel();JPanel pane1_5=new JPanel();JPanel pane1_6=new JPanel();Timer timer;/ 计时器/游戏界面按钮JButton button1_1=new JButton( 开始 );JButton button1_2=new JButton( 下一张 );JButton b
19、utton1_3=new JButton( 暂停 );JButton button1_4=new JButton( 返回 );JButton EmptyButton=new JButton();JButton button_1=new JButton44;/游戏界面标签JLabel YuanTu=new JLabel();JLabel BuShu=new JLabel();JLabel ShiJian=new JLabel();JLabel BuShu_num=new JLabel( 步数 :+Count);JLabel ShiJian_num=new JLabel();JLabel labe
20、l_time=new JLabel( 时间 :+00:00);GridLayout TuLay=new GridLayout(4,4,0,0);FlowLayout LeftLay=new FlowLayout(FlowLayout.LEFT,0,15);void jiLu()int number=0;String colname = 编号 , 账号 , 时间 , 步数, 日期 ;String data=new String105;Connection conn=ConnectSql();String sql=select username,score,count fromuser_info;
21、try Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(sql);while(rs.next()String username=rs.getString(1);String score=rs.getString(2);int count =rs.getInt(3);String num=+number;String count1=+count;if(count!=0)datanumber0 =num;datanumber1 =username;datanumber2 =score;datanumber3
22、=count1;datanumber4 =;number+; catch (SQLException e1) /TODO 自动生成的 catch 块e1.printStackTrace();JTable table = new JTable(data,colname);table.setEnabled(false);JScrollPane jsPane = new JScrollPane(table); pane00.add(jsPane,BorderLayout.CENTER); frame5.add(pane00);private String order() String exactne
23、ssOrder = new String44;for (int i=0; i4; i+) for (int j=0; j4; j+) exactnessOrderij= image/+num+ i+j+.jpg;return exactnessOrder;/随机生成无序的图片给每个按钮private String reorder() String exactnessOrder = new String44;for (int i=0; i4; i+) for (int j=0; j4; j+) exactnessOrderij= image/+num+ i+j+.jpg;String stoch
24、asticOrder = new String44; for (int i=0; i4; i+) for (int j=0; j4; j+) while (stochasticOrderij=null) int r = (int) (Math.random()*4);int c = (int) (Math.random()*4);if (exactnessOrderrc != null) stochasticOrderij =exactnessOrderrc;exactnessOrderrc = null;return stochasticOrder;/判断游戏能否达成public Boole
25、an isSuccess()int flag=1;String exactnessOrder = order();for(int i=0;i4;i+)for(int j=0;j4;j+)if(!button_1ij.getIcon().equals(exactnessOrderij)flag=0;if(flag=0)return false;elsereturn true;/数据库连结函数Connection ConnectSql()String url =ing=utf-8&useSSL=false;String username = root;String password = 15347
26、8; / 加载驱动程序以连结数据库try Class.forName(com.mysql.jdbc.Driver );returnDriverManager.getConnection( url,username, password );/捕捉加载驱动程序异样catch ( ClassNotFoundException cnfex ) System.err.println(装载 JDBC/ODBC驱动程序失败。 ); cnfex.printStackTrace(); catch (SQLException e) System.err.println(没法连结到数据库。 ); e.printStackTrace();return null;void CreateTable()Connection conn=ConnectSql();String sql=create table user_info(username varchar(255),password varchar(255),score int);Statement stmt;try stmt = conn.createStatement();stmt.execute(sql); catch (SQLException e) /TODO 自动生成的 catch 块e.printStackTrace();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1