请选择 进入手机版 | 继续访问电脑版

Java实现简单的弹球游戏

[复制链接]
盛夏丨光年丶 发表于 2020-12-31 18:57:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
简单的弹球游戏
该步伐主要是用于对java图形化界面编程举行接洽,步伐实现全部接纳的是AWT包下的类。
步伐仅做参考,供学习使用。
  1. import java.awt.Canvas;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.Timer;public class PinBallGame {        //创建窗口对象        private Frame frame = new Frame("弹球游戏");                //桌面宽度        private final int TABLE_WTDTH = 300;        //桌面高度        private final int TABLE_HEIGHT = 400;                //球拍的高度和宽度        private final int RACKET_WIDTH = 60;        private final int RACKET_HETGHT = 20;                //小球的巨细        private final int BALL_SIZE = 16;                //界说变量,记载小球的坐标        private int ballX = 120;        private int ballY = 20;                //界说变量,记载小球在x和y方向上分别移动的速度        private int speedY = 10;        private int speedX = 5;                //界说变量,记载球拍的坐标        private int racketX = 120;        private final int racketY = 340;                //界说变量,标识当前游戏是否已结束        private boolean isOver = false;                //声明一个定时器        private Timer timer;                //自界说一个类,继承Canvas,充当画布        @SuppressWarnings("serial")        private class MyCanvas extends Canvas{                                @Override                public void paint(Graphics g) {                        //TODO 在这里绘制内容                        if (isOver) {                                //游戏结束                                g.setColor(Color.BLUE);                                g.setFont(new Font("Times",Font.BOLD,30));                                g.drawString("游戏结束!", 50, 200);                                                        }else{                                //游戏中                                //绘制小球                                g.setColor(Color.RED);                                g.fillOval(ballX, ballY, BALL_SIZE, BALL_SIZE);                                //绘制球拍                                g.setColor(Color.PINK);                                g.fillRect(racketX, racketY, RACKET_WIDTH, RACKET_HETGHT);                        }                }        }                //创建绘画区域        MyCanvas drawArea = new MyCanvas();                public void init() {                //组装视图,游戏逻辑的控制                //完成球拍坐标的变革                KeyListener listener = new KeyAdapter() {                                                @Override                        public void keyPressed(KeyEvent e) {                                //获取当前按下的键                                int keyCode = e.getKeyCode();                                if (keyCode == KeyEvent.VK_LEFT) {                                        //0) {                                                racketX -= 10;                                        }                                }                                                                if (keyCode == KeyEvent.VK_RIGHT) {                                        //-> 应该向右移动                                        if (racketX racketX && ballX < racketX+RACKET_WIDTH)) {                                        speedY = -speedY;                                }                                                                if (ballY > racketY-BALL_SIZE && (ballX < racketX || ballX > racketX+RACKET_WIDTH)) {                                        //当前小球超出了球拍的范围,游戏结束                                        //停止定时器                                        timer.stop();                                        //修改游戏是否结束的标志                                        isOver = true;                                        //重绘界面                                        drawArea.repaint();                                }                                                                //更新小球的坐标,重绘界面                                ballX += speedX;                                ballY += speedY;                                //重绘界面                                drawArea.repaint();                        }                };                                timer = new Timer(100, task);                timer.start();                                drawArea.setPreferredSize(new Dimension(TABLE_WTDTH,TABLE_HEIGHT));                frame.add(drawArea);                                //设置frame最佳巨细,并可视                frame.pack();                frame.setVisible(true);                frame.setLocationRelativeTo(null);                                frame.addWindowListener(new WindowAdapter() {                                                @Override                        public void windowClosing(WindowEvent e) {                                System.exit(0);                        }                });        }        public static void main(String[] args) {                new PinBallGame().init();        }}
复制代码
来源:https://blog.csdn.net/qq_49529322/article/details/111899889
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )