java实现弹球小游戏

GUI实现弹球小游戏,供大家参考,具体内容如下

先看一下游戏效果图。

一个简单的Demo。也比较简单,新手试着做一做完善改进。

源代码

import Com.Style.FontStyle;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
 * @Author: 冀十三
 * @DescIption: 弹球小游戏
 * @Date:2021--06--10--17:08
 */
public class Demo  extends JFrame {
    //创建游戏窗口
    public Demo() {
        init();
    }

    //桌面大小
    private final int TABLE_WIDTH = 450;
    private final int TABLE_HEIGHT = 600;
    //球大小
    private final int BALL_SIZE = 15;

    //球拍大小
    private final int RACKET_WIDTH = 120;
    private final int RACKET_HEIGHT = 20;
    //记录小球坐标
    private double BallX = 100;
    private double BallY = 200;
    //记录球拍坐标
    private double RACKET_X = 150;
    private final double RACKET_Y = 380;
    //记录小球速度
    private double speedX = 10;
    private double speedY = 20;
    //记录游戏是否结束
    private boolean isOver = false;
    //声明一个积分器
    int score= 0;

    //声明一个计时器。

    ActionListener run = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //更新小球坐标让小球动起来
            BallY+=speedY;
            BallX+=speedX;
            //重绘界面
            mycanvas.repaint();
            //碰到两边的时候
            if (BallX<=0||BallX>=TABLE_WIDTH-BALL_SIZE){
                speedX=-speedX;
            }
            //碰到上边界的时候
            if(BallY<=0){
                speedY=-speedY;
            }
            //接住小球的时候
            if ( BallY>=(RACKET_Y-BALL_SIZE)&&BallX>RACKET_X&&BallX<(RACKET_X+RACKET_WIDTH)){
                //得10分
                score+=10;
                speedY=-speedY;

            }
            if ((BallY>(RACKET_Y-BALL_SIZE)&&(BallX<RACKET_X||BallX>RACKET_X+RACKET_WIDTH))){
                timer.stop();
                isOver=true;
                mycanvas.repaint();
            }
        }
    }

        ;
        private Timer timer = new Timer(60, run);

        //内部类继承Canvas充当画布
        private class myCanvas extends Canvas {
            public void paint(Graphics g) {
                //绘制内容
                //如果游戏结束
                if (isOver) {
                    //给画笔颜色
                    g.setColor(new Color(0xFF9A1B44, true));
                    //给画笔字体
                    g.setFont(new Font("宋体", FontStyle.BOLD, 25));
                    g.drawString("Game Over!", 120, TABLE_HEIGHT / 4);
                    g.drawString("成绩"+score+"分", 120, TABLE_HEIGHT / 3);
                    g.drawString("按空格再来一次", 120, TABLE_HEIGHT / 2);
                } else {
                    //否则游戏中
                    //绘制小球

                    g.setColor(new Color(0xFF09FAA6, true));
                    g.fillOval((int) BallX, (int) BallY, BALL_SIZE, BALL_SIZE);
                    //画一个积分系统
                    //上色
                    g.setColor(new Color(0xE8DC0C77,true));
                    //给画笔字体
                    g.setFont(new Font("宋体", FontStyle.BOLD, 25));
                    g.drawString("得分:"+score, 25, 25);

                    //绘制球拍
                    g.setColor(new Color(0xFF0E51D7, true));
                    g.fillRect((int) RACKET_X, (int) RACKET_Y, RACKET_WIDTH, RACKET_HEIGHT);
                    timer.start();

                }
            }
        }

        //创建绘画区
        myCanvas mycanvas = new myCanvas();

        //窗口初始化
        public void init() {

            JFrame jFrame = new JFrame();
            jFrame.setTitle("弹球小游戏");//窗口名称
            jFrame.pack();//自适应布局
            jFrame.setVisible(true);//可见
            jFrame.add(mycanvas);
            jFrame.setBounds(500, 200, TABLE_WIDTH, TABLE_HEIGHT);
            jFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//关闭
            mycanvas.setPreferredSize(new Dimension(TABLE_WIDTH, TABLE_HEIGHT));//画布大小
            jFrame.setResizable(false);//大小不可变

            KeyListener keyListener = new KeyAdapter() {
                //重写键盘被按压的方法
                @Override
                public void keyPressed(KeyEvent e) {
                    //接收按下的是哪个键
                    int key = e.getKeyCode();
                    if (key == KeyEvent.VK_LEFT) {
                        if (RACKET_X >0) {
                            RACKET_X -= 30;
                        }
                    }
                    if (key == KeyEvent.VK_RIGHT) {
                        if (RACKET_X < (TABLE_WIDTH - RACKET_WIDTH )) {
                            RACKET_X += 30;
                        }
                    }
                    if (key == KeyEvent.VK_SPACE) {
                        if (isOver=true) {
                            Demo.main(null);

                        }
                    }
                }

            };

            //窗口获取键盘监听
            jFrame.addKeyListener(keyListener);
            //键盘获取键盘监听
            mycanvas.addKeyListener(keyListener);

        }

        public static void main(String[] args) {
            new Demo();

        }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 解析Java中的定时器及使用定时器制作弹弹球游戏的示例

    在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面LZ就其原理.实例以及Timer缺陷三个方面来解析java Timer定时器. 一.简介       在java中一个完整定时任务需要由Timer.TimerTask两个类来配合完成. API中是这样定义他们的,Timer:一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.由TimerTask:Timer 安排为一次执行或重复执行的任务.

  • Java基于swing实现的弹球游戏代码

    本文实例讲述了Java基于swing实现的弹球游戏代码.分享给大家供大家参考. 主要功能代码如下: 复制代码 代码如下: package Game; import java.awt.Graphics; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Random;

  • java实现简单的弹球游戏

    弹球游戏实现原理: 隔一定时间(小于1秒)重新绘制图像,因为Graphics类是一个抽象类,创建子类的时候需要把所有涉及的方法都得重写,所以这里使用的是创建Canvas的子类,只需要重写它的paint()方法来实现.这里我们用了键盘监听事件.Timer类等. 游戏说明: 该弹球游戏中的小球会随着时间增加速度且速度最多是横向速度和垂直速度为10.当小球的y坐标(垂直坐标)大于球拍的y坐标(垂直坐标)即判断游戏结束.控制台显示的是小球的x方向的速度和y方向的速度. import java.awt.*

  • Java实力弹弹球实现代码

    先看看效果图: 直接上代码了. 微调按钮加画布画几个圆,再实现监听... package cn.hncu.threadDemo.thread2; import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEven

  • java实现弹球小游戏

    GUI实现弹球小游戏,供大家参考,具体内容如下 先看一下游戏效果图. 一个简单的Demo.也比较简单,新手试着做一做完善改进. 源代码 import Com.Style.FontStyle; import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * @Author: 冀十三 * @DescIption: 弹球小游戏 * @Date:2021--06--10--17:08 */ public class Demo

  • java实现五子棋小游戏

    java实现五子棋小游戏 package Gomoku; import java.awt.Toolkit; import javax.swing.JFrame; public class GomokuFrame extends JFrame { //定义一个操作面板 OperatorPane op=null; public GomokuFrame() { //设置名称 this.setTitle("五子棋"); //设置窗口大小 this.setSize(510,510); //设置窗

  • Python实现的弹球小游戏示例

    本文实例讲述了Python实现的弹球小游戏.分享给大家供大家参考,具体如下: 弹球 1. Ball 类 draw负责移动Ball 碰撞检测,反弹,Ball检测Paddle 2.Paddle类 draw负责移动Paddle 碰撞检测,确定能不能继续 监听键盘事件 3.主循环 绘制Ball和Paddle update sleep 代码 from Tkinter import * import random import time class Ball: def __init__(self, canv

  • Java编程经典小游戏设计-打砖块小游戏源码

    [程序中使用的数据结构和符号说明] HitBrick类 GreenBallThread控制小球路线 xUp,yUp,bouncing定义变量存储16位数值形式 x,y小球坐标 xDx,yDy坐标增量 MAX_X,MAX_Y坐标最大值 renew初始化 label标签 Rx,Ry横板坐标 Brick[]砖块 ball小球 HitBrick()定义小球横板及砖块位置坐标 keyPressd(keyEent)定义小球启动键(按空格键启动) keyReleased(keyEvent)接收键盘事件侦听器接

  • java实现桌球小游戏

    本文实例为大家分享了java实现桌球小游戏的具体代码,供大家参考,具体内容如下 桌球小游戏 两张图片放在src的同级目录下 版本一.出现窗口 package cn.xjion.game; /** * 出现窗口 * @author xjion * */ import java.awt.*; import javax.swing.*; //继承窗口类 public class BallGame extends JFrame{ // 窗口加载的方法 void launchFrame(){ // 窗口的

  • Python基于Tkinter模块实现的弹球小游戏

    本文实例讲述了Python基于Tkinter模块实现的弹球小游戏.分享给大家供大家参考,具体如下: #!usr/bin/python #-*- coding:utf-8 -*- from Tkinter import * import Tkinter import random import time #创建小球的类 class Ball: def __init__(self,canvas,paddle,color): #参数:画布,球拍和颜色 self.canvas = canvas self

  • java猜数字小游戏案例

    本文实例为大家分享了java猜数字小游戏案例,供大家参考,具体内容如下 package day08; import java.util.Scanner; public class GuessNumber { /** * 猜数字小游戏:. 需求: 随机产生一个整数数1-100(被猜数)不设置输出 * 键盘录入一个玩家要猜的数字 * 判断猜大还是猜小了或者猜中 */ public static void main(String[] args) { // 随机产生整数1-100 int number

  • python3实现弹弹球小游戏

    本文实例为大家分享了python3实现弹弹球小游戏的具体代码,供大家参考,具体内容如下 from tkinter import * from tkinter import messagebox import random import time from PIL import Image, ImageTk import sys class Game: def __init__(self): self.tk = Tk() self.times = 0 sw = self.tk.winfo_scre

  • python运用pygame库实现双人弹球小游戏

    使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截失败的一方输掉游戏,规则类似于简化版的乒乓球. 因为是第一次用pygame写python小游戏并且只用了两三个小时,所以有些粗糙,部分方面有些bug,比如板子可以移动出屏幕外,游戏结束后的提示显示不全. 但是关键部分如小球的移动和基本功能等,还算比较完善. 代码如下: 运行环境为python 3.7,需要安装pygame库 import pygame,sys,time,

  • java实现扫雷小游戏

    本文实例为大家分享了java实现扫雷小游戏的具体代码,供大家参考,具体内容如下 代码: package GUI; import java.util.Random; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.awt.BorderLayout; import java.awt.GridLayo

随机推荐