2048小游戏 Java 课程设计报告书(3)

2019-08-03 10:09

(1)首次运行程序(在工程文件中建立保存最高分的文件)和再次运行程序

(2)游戏结束

9

六、总结

在这次的课程设计中不仅检验了我所学习的知识,也培养了我的实践能力,让我知道遇到一个问题,如何去寻找思路,如何去解决问题,最终完成整个事情。课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。这次课程设计不仅是对这学期所学知识的一种综合检验,而且也是对自己动手能力的一种提高,增强了自己实践能力。通过这次课程设计使我明白了自己知识还比较欠缺,只是学习书本知识还是远远不够的,自己不会的东西还有太多,学习需要自己长期的积累,在以后的学习、工作中都应该不断的学习,将课本的理论知识与生活中的实践知识相结合,不断提高自己文化知识和实践能力。由于本次试验的很多知识都是现学现用,以致很多地方的代码显得累赘繁琐。但总体上主要功能是实现了的,并且美化了一下主界面,使得界面更加简洁。

最后也感谢老师给予的耐心指导与帮助。

总之,此次课程设计让我获益匪浅,我将会继续把它完善做好

参考文献

[1] java语言程序设计基础篇[M].机械工业出版社.2011.3.

[2] 黄晓东.Java课程设计案例精编[M].北京:中国水利水电出版社,2007.5.

[3] 求是科技. Java信息管理系统开发实例导航[M].北京:人民邮电出版社.2009.4.

源代码清单

package my2048game;

import javax.sound.sampled.*; import javax.swing.*; import java.io.*; import java.awt.*;

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

public class My2048Game extends JFrame{ //定义自己的面板

10

MyPanel mp=null; public static void main(String[] args) { // TODO Auto-generated method stub My2048Game m2048=new My2048Game(); m2048.setFocusable(true);//(设置)该对象的焦点,不能用请求焦点 对象名.requestFocus(); } //构造函数 public My2048Game() { mp=new MyPanel(); this.add(mp); //注册鼠标监听 this.addMouseListener(mp); //注册键盘监听 this.addKeyListener(mp); this.setTitle(\游戏\ this.setLocation(400, 30); this.setSize(500, 800); this.setResizable(false);//禁止调整窗口大小 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }

class MyPanel extends JPanel implements MouseListener,KeyListener,ActionListener//动作监听器 一般用于监听按钮或者菜单的点击事件 { private int x1=0,y1=0;//按下鼠标左键的位置坐标 private int x2=0,y2=0;//释放鼠标左键的位置坐标 private int option=0;//记录鼠标移动的方向 //定义组件 private JButton jb1;//声音图标的按钮 private static boolean jb1_flag=true;//用于控制声音开关的一个标志 private boolean jb1_flag2=true;// public static boolean isJb1_flag() { return jb1_flag; } public static void setJb1_flag(boolean jb1_flag) { MyPanel.jb1_flag = jb1_flag; } private JPanel scoresPane; // 分数面板 private JPanel mainPane; // 游戏主面板 private JLabel labelMaxScores; // \最高分\标签 private JLabel m2048;//显示2048

11

private JLabel labelScores; // 当前\得分\标签 private JLabel tips;// 提示操作标签 private JLabel currentScores; private JLabel textScores; private JLabel[][] texts; // 创建文本框二维数组 private int[][] temp1 = new int [4][4]; //记录上一步的状态 private int[][] temp2 = new int [4][4]; //记录当前的状态 private int times = 16;// 记录剩余空方块数目 private int scores = 0;// 记录分数 private int maxscores=0;//最高分 private int temp1scores = 0; private int temp2scores = 0; private int p1, p2, p3, p4;// 用于判断游戏是否失败 private int biaoji = 1; //标记能否移动 Font font = new Font(\设置字体类型和大小(标签字体的设置) Font font2 = new Font(\主面板的数字字体的设置 Random random = new Random(); //构造函数 public MyPanel() { super();//调用父类的构造方法 //在构造函数中创建组件 this.setLayout(null);// 设置空布局 this.setBackground(new Color(2,150,220));//设置该MyPanel类的背景颜色 scoresPane=new JPanel();//创建分数显示面板 scoresPane.setBackground(new Color(5,150,220));//设置分数面板的背景颜色 scoresPane.setBounds(0,0,482,100);//设置该面板显示的位置和长宽 //scoresPane.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.yellow));//设置该面板的边框 this.add(scoresPane);//将分数面板加载到MyPanel面板上 scoresPane.setLayout(null);//设置得分面板的布局为空 m2048=new JLabel(\创建标签 //m2048.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.yellow)); m2048.setFont(new Font(\宋体\设置字体类型和大小 m2048.setBounds(0,0,120,100); scoresPane.add(m2048); currentScores = new JLabel();// 当前得分标签 currentScores.setText(\ currentScores.setFont(new Font(\宋体\设置字体类型和大小 //currentScores.setBorder(BorderFactory.createMatteBorder(0,0, 0, 1, Color.yellow)); currentScores.setBounds(240,0, 140, 100);// 设置最高分标签的位置尺寸 scoresPane.add(currentScores);// 将最高分标签添加到得分容器中 //从文件取得最高分的数据 Recorder.getRecording();

12

maxscores=Recorder.getMaxscores_2048(); labelMaxScores = new JLabel(\最高得分标签 labelMaxScores.setFont(new Font(\宋体\设置字体类型和大小 //labelMaxScores.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.yellow)); labelMaxScores.setBounds(380, 0, 120, 100); scoresPane.add(labelMaxScores);// 将得分标签添加到分数面板中 jb1=new JButton(new ImageIcon(\声音图标.jpg\ jb1.setBounds(433,120,45,30); this.add(jb1); //注册按钮监听 jb1.setActionCommand(\ jb1.addActionListener(this); mainPane = new JPanel();// 创建游戏主面板 mainPane.setBounds(18, 150, 460, 460);// 设置主面板位置尺寸 mainPane.setBackground(new Color(40,190,240)); //mainPane.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.yellow)); this.add(mainPane); mainPane.setLayout(null);// 设置空布局 texts = new JLabel[4][4];// 创建文本框二维数组 for (int i = 0; i < 4; i++) {// 遍历数组 for (int j = 0; j < 4; j++) { texts[i][j] = new JLabel();// 创建标签 texts[i][j].setFont(font2); texts[i][j].setHorizontalAlignment(SwingConstants.CENTER); // 设置标签内容沿X轴的对齐方式;某区域的中心位置 texts[i][j].setText(\ texts[i][j].setBounds(110 * j+15, 110 * i+15, 100, 100);// 设置方块的大小位置 setColor(i, j, \ texts[i][j].setOpaque(true); // 设置控件不透明 //texts[i][j].setBorder(BorderFactory.createMatteBorder(2, 2, 2, // 2, Color.green));// 设置方块边框颜色 mainPane.add(texts[i][j]);// 将创建的文本框放在主面板中 } } tips = new JLabel(\小提示:在灰色区域内按下鼠标左键并向上下左右 方向拖动
&NBSP &NBSP &NBSP &NBSP &NBSP &NBSP &NBSP 也可以通过键盘的方向键来上下左右移动\ + \键返回上一步\ tips.setFont(font); tips.setForeground(Color.black); tips.setBounds(0, 640, 500, 60);

13


2048小游戏 Java 课程设计报告书(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:医院揭牌仪式主持词范本

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: