精华内容
下载资源
问答
  • 2021-03-13 02:43:36

    用java编写的小游戏源代码分析

    1/5/2008人气:12951

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import java.util.*;

    public class GreedSnake implements KeyListener{

    JFrame mainFrame;

    Canvas paintCanvas;

    JLabel labelScore;

    SnakeModel snakeModel = null;

    public static final int canvasWidth = 200;

    public static final int canvasHeight = 300;

    public static final int nodeWidth = 10;

    public static final int nodeHeight = 10;

    public GreedSnake() {

    mainFrame = new JFrame("GreedSnake");

    Container cp = mainFrame.getContentPane();

    labelScore = new JLabel("Score:");

    cp.add(labelScore, BorderLayout.NORTH);

    paintCanvas = new Canvas();

    paintCanvas.setSize(canvasWidth+1,canvasHeight+1);

    paintCanvas.addKeyListener(this);

    cp.add(paintCanvas, BorderLayout.CENTER);

    JPanel panelButtom = new JPanel();

    panelButtom.setLayout(new BorderLayout());

    JLabel labelHelp;

    labelHelp = new JLabel("PageUp, PageDown for speed;", JLabel.CENTER);

    panelButtom.add(labelHelp, BorderLayout.NORTH);

    labelHelp = new JLabel("ENTER or R or S for start;", JLabel.CENTER);

    panelButtom.add(labelHelp, BorderLayout.CENTER);

    labelHelp = new JLabel("SPACE or P for pause",JLabel.CENTER);

    panelButtom.add(labelHelp, BorderLayout.SOUTH);

    cp.add(panelButtom,BorderLayout.SOUTH);

    mainFrame.addKeyListener(this);

    mainFrame.pack();

    mainFrame.setResizable(false);

    mainFrame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

    mainFrame.setVisible(true);

    begin();

    }

    public void keyPRessed(KeyEvent e){

    int keyCode = e.getKeyCode();

    if (snakeModel.running)

    switch(keyCode){

    case KeyEvent.VK_UP:

    snakeModel.changeDirection(SnakeModel.UP);

    break;

    case KeyEvent.VK_DOWN:

    snakeModel.changeDirection(SnakeModel.DOWN);

    break;

    case KeyEvent.VK_LEFT:

    snakeModel.changeDirection(SnakeModel.LEFT);

    break;

    case KeyEvent.VK_RIGHT:

    snakeModel.changeDirection(SnakeModel.RIGHT);

    break;

    case KeyEvent.VK_ADD:

    case KeyEvent.VK_PAGE_UP:

    snakeModel.speedUp();

    break;

    case KeyEvent.VK_SUBTRACT:

    case KeyEvent.VK_PAGE_DOWN:

    snakeModel.speedDown();

    break;

    case KeyEvent.VK_SPACE:

    case KeyEvent.VK_P:

    snakeModel.changePauseState();

    break;

    default:

    }

    if (keyCode == KeyEvent.VK_R

    keyCode == KeyEvent.VK_S

    keyCode == KeyEvent.VK_ENTER){

    snakeModel.running = false;

    begin();

    }

    }

    public void keyReleased(KeyEvent e){

    }

    public void keyTyped(KeyEvent e){

    }

    void repaint(){

    Graphics g = paintCanvas.getGraphics();

    //draw background

    g.setColor(Color.WHITE);

    g.fillRect(0,0,canvasWidth,canvasHeight);

    // draw the snake

    g.setColor(Color.BLACK);

    LinkedList na = snakeModel.nodeArray;

    Iterator it = na.iterator();

    while(it.hasNext()){

    Node n = (Node)it.next();

    drawNode(g,n);

    }

    // draw the food

    g.setColor(Color.RED);

    Node n = snakeModel.food;

    drawNode(g,n);

    updateScore();

    }

    private void drawNode(Graphics g, Node n){

    g.fillRect(n.x*nodeWidth,

    n.y*nodeHeight,

    nodeWidth-1,

    nodeHeight-1);

    }

    public void updateScore(){

    String s = "Score: " + snakeModel.score;

    labelScore.setText(s);

    }

    void begin(){

    if (snakeModel == null !snakeModel.running){

    snakeModel = new SnakeModel(this,

    canvasWidth/nodeWidth,

    canvasHeight/nodeHeight);

    (new Thread(snakeModel)).start();

    }

    }

    public static void main(String[] args){

    GreedSnake gs = new GreedSnake();

    }

    }

    ///

    // 文件2

    ///

    import java.util.*;

    import javax.swing.*;

    class SnakeModel implements Runnable{

    GreedSnake gs;

    boolean[][] matrix;

    LinkedList nodeArray = new LinkedList();

    Node food;

    int maxX;

    int maxY;

    int direction = 2;

    boolean running = false;

    int timeInterval = 200;

    double speedChangeRate = 0.75;

    boolean paused = false;

    int score = 0;

    int countMove = 0;

    // UP and DOWN should be even

    // RIGHT and LEFT should be odd

    public static final int UP = 2;

    public static final int DOWN = 4;

    public static final int LEFT = 1;

    public static final int RIGHT = 3;

    public SnakeModel(GreedSnake gs, int maxX, int maxY){

    this.gs = gs;

    this.maxX = maxX;

    this.maxY = maxY;

    // initial matirx

    matrix = new boolean[maxX][];

    for(int i=0; i

    matrix[i] = new boolean[maxY];

    Arrays.fill(matrix[i],false);

    }

    // initial the snake

    int initArrayLength = maxX > 20 ? 10 : maxX/2;

    for(int i = 0; i < initArrayLength; ++i){

    int x = maxX/2+i;

    int y = maxY/2;

    nodeArray.addLast(new Node(x, y));

    matrix[x][y] = true;

    }

    food = createFood();

    matrix[food.x][food.y] = true;

    }

    public void changeDirection(int newDirection){

    if (direction % 2 != newDirection % 2){

    direction = newDirection;

    }

    }

    public boolean moveOn(){

    Node n = (Node)nodeArray.getFirst();

    int x = n.x;

    int y = n.y;

    switch(direction){

    case UP:

    y--;

    break;

    case DOWN:

    y++;

    break;

    case LEFT:

    x--;

    break;

    case RIGHT:

    x++;

    break;

    }

    if ((0 <= x && x < maxX) && (0 <= y && y < maxY)){

    if (matrix[x][y]){

    if(x == food.x && y == food.y){

    nodeArray.addFirst(food);

    int scoreGet = (10000 - 200 * countMove) / timeInterval;

    score += scoreGet > 0? scoreGet : 10;

    countMove = 0;

    food = createFood();

    matrix[food.x][food.y] = true;

    return true;

    }

    else

    return false;

    }

    else{

    nodeArray.addFirst(new Node(x,y));

    matrix[x][y] = true;

    n = (Node)nodeArray.removeLast();

    matrix[n.x][n.y] = false;

    countMove++;

    return true;

    更多相关内容
  • 用java编写一个小游戏

    2021-06-22 21:51:32
    **Java SDK的并发工具包有很多,是要死记硬背每一个工具的优缺点和使用场景吗?**当然不是,想要学好并发编程,你需要从一个个单一的知识和技术中“跳出来”,高屋建瓴地看问题,并逐步建立自己的知识体系。 在这里...

    开头

    对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一。因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,更为考验一个程序员的内功。

    那到底应该怎么学习并发编程呢?**Java SDK的并发工具包有很多,是要死记硬背每一个工具的优缺点和使用场景吗?**当然不是,想要学好并发编程,你需要从一个个单一的知识和技术中“跳出来”,高屋建瓴地看问题,并逐步建立自己的知识体系。

    在这里对那些对并发编程原理方面理解的不透彻,对并发编程的理解模糊不清,面试时应对面试官问到volatile原理和AQS有些发怵的小伙伴。这里小编就要给大家分享花重金买的一个保姆级并发编程核心笔记了,下面是这份笔记的特点,可能会颠覆你以往对并发编程"正确"的认知

    目录

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    一、冒泡排序

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    二、选择排序

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    三、插入排序

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    四、快速排序

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    五、归并排序

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    六、希尔排序

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    七、堆排序

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    八、基数排序(桶排序)

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    九、递归

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    十、链表

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    十一、栈

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    十二、队列

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    十三、二叉树

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    上分工具,凭这份《数据结构与算法》核心文档,我“跳”进了字节

    难道这样就够了吗?不,远远不够!

    提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。

    备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记,以及学习视频都是可以点击这里免费领取的!

    我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。

    今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!

    阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

    阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

    image.png

    -1624369885872)]

    [外链图片转存中…(img-Xg6uKGIL-1624369885873)]

    [外链图片转存中…(img-h3XqBdNa-1624369885873)]

    展开全文
  • 我写的这个扑克牌小游戏一个很基础的java控制台程序。这个扑克牌游戏主要的游戏过程是:首先创建一副扑克牌,创建完扑克牌之后要进行洗牌,牌洗好了,需要玩家来玩,接下来就创建玩家。有洗好的牌,也有玩家了,...
  • java编写贪吃蛇小游戏

    2020-09-03 20:49:39
    贪吃蛇是经典手机游戏,既简单又耐玩。通过控制蛇头方向吃蛋,使得蛇变长,从而获得积分。今天我们就来用java来实现下贪吃蛇小游戏,有需要的小伙伴可以参考下
  • 这是一个使用Java编写的俄罗斯方块小游戏,主要运用了Java类和对象中封装、继承、多态三大特性,适合于初学者。
  • Java编写猜数字小游戏

    2020-09-03 07:26:16
    主要介绍了由Java编写的猜数字小游戏分享给大家,感兴趣的小伙伴们可以参考一下
  • java编写一个贪吃蛇小游戏 效果展示 思路 首先要明确一点,图像之所以能够不断移动,是因为屏幕在不断刷新,当频率达到一定程度时,我们由于视觉暂留,会认为图像是一个流畅的播放过程。 这里根据原作者思路,将整个...
  • Java编写迷宫小游戏

    2020-09-02 09:59:34
    最近经常在机房看同学在玩一个走迷宫的游戏,比较有趣,自己也用java一个实现随机生成迷宫的算法,其实就是一个图的深度优先遍历算法.
  • 使用 JFrame UI Ja​​va 编写的简单地牢探索风格游戏 作者:阿伦·施特劳斯曼、米洛·汉森 这是为我的软件开发课程编写的简单的多用户(两人)地牢风格游戏。 通过使用多线程、JFrames、EventListeners 和抽象类...
  • 一个用java写的小游戏

    2013-01-04 13:42:35
    一个java写的小游戏,是男人就坚持30秒的一个小游戏,可以玩玩,看看原代,比较简单,可能能给你一些思路吧。
  • java编写的GUI编程2048小游戏有源码以及游戏素材可正常运行
  • 如何用java语言编写小游戏?(

    千次阅读 2021-02-05 09:54:32
    学习java的过程中,如果想找一些小游戏项目来练手的话,我们需要学习哪些技术先呢?(适用于java初学者) 第步:了解GUI编程—Swing基础 GUI(Graphical User interface): Java支持图形用户界面功能。GUI即图形...

    学习java的过程中,如果想找一些小游戏项目来练手的话,我们需要学习哪些技术先呢?(适用于java初学者)

    第一步:了解GUI编程—Swing基础

    GUI(Graphical User interface): Java支持图形用户界面功能。GUI即图形用户界面,也就是应用程序提供给用户操作的图形界面,包括窗口、菜单、工具栏及其他多种图形界面元素,如文本框、按钮、列表框、对话框等。它能使应用程序显得更加友好(虽然现在开发桌面应用多半使用HTML和css还有js了,但还是有了解GUI编程的必要的

    学习Java的GUI编程主要掌握两个包,分别是java.awt包和javax.swing,简称为AWT和Swing。
    这两个包中包含了GUI编程需要用到的丰富的类库。

    值得注意的是: AWT(Abstract Window Toolkit,抽象工具包)中的组件是有限的,不能实现GUI编程所需的所有功能,因此Swing作为AWT的拓展应运而生了。Swing不仅提供了AWT的所有功能,还用纯粹的Java代码对AWT功能进行了大范围扩充,所以Swing可以满足GUI编程的所有需求。

    AWT简介:GUI编程的实现,是有一系列图形化组件来完成的,这些GUI的构件被称为控件。在Java的早期版本中,GUI控件由名为AWT的标准库来提供的。 除了GUI组件外,AWT还包括其他支持吐血绘制、处理剪切/复制类型的数据传送,以及其他相关操作。
    java.awt包是Java的内置包,其中包括以下内容:

    1. 便于用户输入的一组丰富的界面组件

    2. 将组件放置在适当位置的几种布局管理局

    3. 时间处理模型

    4. 图形和图像工具等

    5. 使用该包中的类,必须显示声明:import java.awt.*

      下图为该包中控件类的体系结构图。
      在这里插入图片描述
      可以看出,控件类的父类为Component,其直接或间接子类中有图形界面中常用的控件,如Frame(窗口)、Button(按钮),Lable(标签),CheckBox(复选框)等等

    Swing简介:Swting是在AWT基础上发展而来的轻量级组件,与AWT相比它不但改进了用户界面,而且所需的系统资源更少。Swing是纯Java组件,这使得所有的应用程序在不同的平台上运行时具有和本机外观相同的行为。
    注意:使用改包时也需要显示声明:import javax.swing.*。
    javax.swing 包中控件类体系图如下
    在这里插入图片描述
    我们在这里可以看到,这个包里大部分控件都是继承了awt包中的控件的,比如说:JFrame的父类为Frame等等、

    下面讲解Swing程序中常用的类和控件
    JFrame在GUI中表示为一个窗口对象,继承于Frame。JFrame控件用于在Swing程序中创建窗口,JFrame常见的构造器如下:

    • JFrame() 创建一个初始时不可见的窗口
    • JFrame(String title) 创建一个新的、初始时不可见的、具有指定标题的窗口

    JFrame中还包含了展示窗口和很多对窗口属性进行设置的方法,如下:

    • void setTitle(String title) 以title中指定的值,设置窗口的标题

    • void setSize(int w,int h) 设置窗口的大小,参数w和h是指定的宽度和高度

    • void show() 显示窗口

    • Container getContentPane() 获得窗口的内容面板,当要往窗口中添加组件或者设置布局时,要用到该方法

    • void setVisible(boolean b) 设置窗口是否可见,由参数b决定

    • void setResizable(boolean resizable) 设置窗口是否由用户调整大小,由参数resizable决定

    • void setBackground(Color c) 设置窗口的背景色

      一个简单的窗体:
      在这里插入图片描述
      show()方法也可以设置窗口可见,但是它无法设置窗口不可见,没有setVisible()方法这样灵活。
      同时我们看到,颜色设置为黑色失败了。因为setBackground在设置窗口颜色的语句在JFrame中是无效的,因为该方法是继承自Frame的。要想在JFrame中改变窗口颜色,要用JFrame.getContentPane().setBackground(Corlor.bule)语句。
      在这里插入图片描述
      前面两个实例创建的窗口,是允许了用户自由调整大小的,就是可以去拉伸窗口的意思。。。但是不想让窗口的大小被随意调整,并且将创建窗口的代码进行封装,我们可以这样写:
      在这里插入图片描述
      注意:在我们关闭窗口时,应用程序并没有结束,因为Java规定的窗口默认的关闭模式只是使之不可见罢了,这就导致在关闭一个窗口时,其实只是隐藏了窗口,而不是程序结束的意思
      解决方法如下所示:
      //关闭窗口时,程序结束
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭时退出程序

      这些内容很简单,大家自己试试吧。

    展开全文
  • 用java编写拼图小游戏

    2017-12-15 11:11:45
    此程序为用JAVA编写的拼图小游戏,可通过简单的图片移动实现拼图,并实现音乐播放功能。
  • Java编写掷骰子游戏

    2020-09-03 03:17:56
    主要介绍了Java编写掷骰子游戏,需要的朋友可以参考下
  • 用Java一个小游戏

    千次阅读 多人点赞 2020-08-30 22:56:48
    游戏开始图片 如下: 游戏胜利图片 如下: ...编写过程用到的知识点 1、JFrame:是用来创建一个屏幕上的窗口 2、JMenuBar:是窗口上面的菜单栏 3、JMenu: 4、JMenuItem 5、JLabel 6、ImageIcon

    游戏开始图片 如下:在这里插入图片描述
    游戏胜利图片 如下:
    在这里插入图片描述

    游戏分析:

           玩家控制键盘上下左右键,当数字按照从小到大依次排列的时候则玩家获胜
    游戏功能
    1、在游戏的菜单栏中设置了游戏的重新开始案件
    2、制作了一个作弊键
    3、设置了游戏步数计数器


    编写过程用到的小知识点

    JFrame、JMenuBar、JMenu、JMenuItem、JLabel、ImageIcon和继承等小知识点


    代码示例

    第一页代码:

    import javax.swing.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.util.Random;
    //继承JFrame类添加监听器
    public class MyJFrame extends JFrame implements KeyListener, ActionListener {
        //创建一个二维数组
        int[][] datas = new int[4][4];
        //创建一个二维数组为胜利情况下的数组用于胜利判断
        int[][] victory = new int[][]{{1, 2, 3 ,4},{5, 6, 7 ,8},{9, 10, 11 ,12},{13, 14, 15 ,0},};
        //计算步骤
        int step = 0;
        int x0 = 0;
        int y0 = 0;
        public MyJFrame(){
            //初始化窗体
            initJFrame();
            //初始化菜单
            initMenu();
            //将创建的有序数组随机排列后重新存入二维数组
            initData();
            //初始化图片
            initImage();
            //创建窗体
            this.setVisible(true);
        }
        //创建初始化窗体方法
        public void initJFrame(){
            //设置窗体宽高
            this.setSize(514,595);
            //将窗体设置在屏幕正中央
            this.setLocationRelativeTo(null);
            //将窗体覆盖过其他窗体
            this.setAlwaysOnTop(true);
            //点击叉子退出程序
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            //给窗体设置标题
            this.setTitle("石头迷阵单机版 v1.0");
            //让界面添加键盘监听
            this.addKeyListener(this);
            //取消内部居中放置方式
            this.setLayout(null);
        }
        //创建初始化菜单方法
        public void initMenu(){
            //创建菜单对象
            JMenuBar jMenuBar;
            jMenuBar = new JMenuBar();
            //设置菜单宽高
            jMenuBar.setSize(514,20);
            //创建一个选项
            JMenu jMenu = new JMenu("功能");
            //创建一个条目
            JMenuItem jMenuItem = new JMenuItem("重新游戏");
            //将创建的条目绑定监听器
            jMenuItem.addActionListener(this);
            //把条目放到选项里
            jMenu.add(jMenuItem);
            //把选项放到菜单里
            jMenuBar.add(jMenu);
            //把菜单放到窗体里
            this.setJMenuBar(jMenuBar);
        }
        //创建初始化图片方法
        public void initImage(){
            this.getContentPane().removeAll();
            JLabel label_step = new JLabel("步数" + step);
            label_step.setBounds(50, 20,100,20);
            this.add(label_step);
            if (victory()){
                ImageIcon imageIcon = new ImageIcon("image\\win.png");
                JLabel jLabel = new JLabel(imageIcon);
                jLabel.setBounds(514/2-266/2,230,266,88);
                this.add(jLabel);
            }
            for (int i = 0; i < datas.length; i++){
                for (int j = 0; j < datas[i].length; j++) {
                    int data = datas[i][j];
                    if (data != 0){
                        ImageIcon imageIcon = new ImageIcon("image\\"+ data +".png");
                        //创建了一个JLabel对象
                        JLabel jLabel = new JLabel(imageIcon);
                        //设置jLabel的宽高坐标
                        jLabel.setBounds(j * 100 + 50,i *100 + 90,100,100);
                        this.add(jLabel);
                    }
                }
            }
            //添加背景图片
            ImageIcon  background = new ImageIcon("image\\background.png");
            JLabel backgroundJLabel = new JLabel(background);
            backgroundJLabel.setBounds(26, 30, 450,484);
            this.add(backgroundJLabel);
            //将整个界面重新绘制
            this.getContentPane().repaint();
        }
        //此方法用于判断游戏是否完成
        public boolean victory() {
            //判断数组是否相等datas和victory
            for (int i = 0; i < datas.length; i++) {
                for (int j = 0; j < datas[i].length; j++) {
                    if (datas[i][j] != victory[i][j]) {
                        return false;
                    }
                }
            }
            return true;
        }
        //初始化随机二维数组
        public void initData(){
            int[] temp = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, };
            for (int i = 0; i < temp.length; i++) {
                Random r = new Random();
                //因为temp的长度为16,而.nextInt(temp.length)方法的意思是生成范围为[0,16)的随机数
                int index = r.nextInt(temp.length);
                //当我们获得索引的随机数后,我们需要将索引所在元素和当前循环的元素换位置
                int number = temp[i];
                temp[i] = temp[index];
                temp[index] = number;
            }
            for (int i = 0; i < temp.length; i++) {
                //将已经打乱了后的数组存放于二维数组中保存
                datas[i /4][i % 4] = temp[i];
                if (temp[i] == 0){
                    x0 = i / 4;
                    y0 = i %4;
                }
            }
        }
    
        @Override
        public void keyTyped(KeyEvent e) {
    
        }
        //按压
        @Override
        public void keyPressed(KeyEvent e) {
    
        }
        //松开
        @Override
        public void keyReleased(KeyEvent e) {
            int keyCode = e.getKeyCode();
            move(keyCode);
            //重新绘制界面
            initImage();
        }
        //图片移动方法
        public void move(int keyCode){
            //37代表键盘中的左键
            if (keyCode == 37){
                //防止在最右边的一列还要向右移动报错
                if (y0 == 3){
                    return;
                }
                datas[x0][y0] = datas [x0][y0 + 1];
                datas[x0][y0 +1] = 0;
                y0++;
                step++;
            //38代表上
            }else if (keyCode == 38){
                if (x0 == 3){
                    return;
                }
                datas[x0][y0] = datas [x0 + 1][y0];
                datas[x0 +1][y0] = 0;
                x0++;
                step++;
            //右
            }else if (keyCode == 39){
                if (y0 == 0){
                    return;
                }
                datas[x0][y0] = datas [x0][y0 - 1];
                datas[x0][y0 - 1] = 0;
                y0--;
                step++;
            //下
            }else if (keyCode == 40){
                if (x0 == 0){
                    return;
                }
                datas[x0][y0] = datas [x0 - 1][y0];
                datas[x0 - 1][y0] = 0;
                x0--;
                step++;
            }
            //作弊键  一步胜利   w键
            else if (keyCode == 87){
                datas = new int[][]{{1, 2, 3 ,4},{5, 6, 7 ,8},{9, 10, 11 ,12},{13, 14, 15 ,0},};
            }
        }
    
        @Override
        //重新游戏,把图片随机排列,步数清零
        public void actionPerformed(ActionEvent e) {
            initData();
            step = 0;
            initImage();
    
        }
    }
    
    

    第二页代码

    public class App {
        public static void main(String[] args) {
            MyJFrame jFrame = new MyJFrame();
        }
    }
    

    这是我跟着网上的教学一点点写出来的,因为刚学java没多久,写个小项目练习用。
    源码下载地址在评论区,免费不收币

    展开全文
  • 用Java编写的吃豆人小游戏,操作简单,上下左右控制移动吃豆子,同时会有敌人追赶你,绝对可以运行!!
  • 大部分同学第一门编程语言就是Java,都会感兴趣做一个小游戏来满足成就感。那么作为一个刚刚掌握或了解了Java SE的大部分的初学者,我觉得第一次运用学过的知识制作出东西的影响还是挺大的。 1、它让你对编程有了...
  • 创建的一个简单的图形钓鱼游戏,作为研究生级别用户界面设计课程的学校项目。 它表明: - Various methods of providing users options for controlling the game environment, such as background music and sound ...
  • 本程序为基于JAVA的贪吃蛇小游戏(双人对战版): 1. 游戏规则:两蛇同时自动变长,通过上下左右键操作蛇移动的方向,先碰到对方蛇或碰到墙壁为输; 2. 使用Javafx编写图形界面; 3. 网络编程(Socket),可实现离线...
  • “猜数游戏”项目1开始猜数2退出游戏者选择1,则内部自动产生一个1-100之间的随机数,让游戏者来猜这个数,游戏者从键盘输入数字后,程序给出相应的提示信息(如果比实际,则提示“...“猜数游戏”项目1 开始猜数2 ...
  • 再创建一个TXZ类 3.开始写代码(我的是IDEA开发软件) import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class TXZ6 { public static...
  • 用Java编写一个二十一点小游戏

    千次阅读 2021-03-13 22:22:15
    21点又名黑杰克(Blackjack),起源于...该游戏由2到6个人玩,使用除大小王之外的52张牌,游戏者的目标是使手中的牌的点数之和不超过21点且尽量大。编程实现importjava.util.ArrayList;importjava.util.Arrays;import...
  • 主要介绍了java编写的简单移动方块小游戏代码,涉及Java简单图形绘制与事件响应的相关技巧,需要的朋友可以参考下
  • 教你用JAVA个小游戏

    万次阅读 多人点赞 2019-04-03 10:54:07
    上周上课的时候老师让用Java写个程序,我本想写一个经典的飞机大战游戏来着,可以后来突发奇想就写成了这个 一、整体思路 继承窗体类,复写窗体刷新 添加按键监听 游戏结束界面 王思聪类和热狗类 移动轨迹...
  • java编程小游戏

    2018-12-10 19:31:39
    一款利用java编写的简易小游戏,将解压后的文件夹和源代码放入一个项目下即可成功运行
  • 这是一个使用Java编写的俄罗斯方块小游戏,主要运用了Java类和对象中封装、继承、多态三大特性,适合于初学者。
  • Java制作一个简单地小游戏

    千次阅读 2021-12-03 21:32:32
    import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Random; public class ...
  • java代码编写的十几个小游戏,适用于初学者,有扫地雷、俄罗斯方块等
  • 用Java编写一个猜数字小游戏

    万次阅读 多人点赞 2019-01-11 09:32:23
    猜数字,需要使用到从外部传入参数的方法Scanner。下面,我们直接上代码看看效果: import java.util.Scanner; public class GuessNumber { public static void main(String[] args) { // 猜字小游戏 int...
  • Java编写小游戏,供大家参考学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,996
精华内容 27,998
关键字:

用java编写一个小游戏

java 订阅
友情链接: MYfile.rar