1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 弹弹球小游戏(Java)

弹弹球小游戏(Java)

时间:2022-12-21 03:27:42

相关推荐

弹弹球小游戏(Java)

游戏规则:利用键盘上的->或者<-控制方向,用球拍接住小球,否则游戏结束!

该代码主要利用了GUI的绘图,用Timer保证球拍和小球位置的更新,用适配器KeyAdapter获取用户的指令,参考代码如下,需要改进之处请各位大佬多多指正

import javax.swing.*;import java.awt.*;import java.awt.event.*;public class checkb {//设置frameFrame frame=new Frame("欢迎林giegie来到弹弹球小游戏");private final int TABLE_WIDTH =300;private final int TABLE_HEIGHT =400;//设置小球private final int BALL_SIZE=16;private int BALLX=120;private int BALLY=20;private int SPEEDX=10;private int SPEEDY=5;//设置拍子private final int RACKET_WIDTH=60;private final int RACKET_HEIGHT=20;private int RACKETX=120;private int RACKETY=340;//结束标志private boolean isover=false;//时间对象private Timer timer;//画布private class Mycanvas extends Canvas{@Overridepublic void paint(Graphics g) {// TODO Auto-generated method stubsuper.paint(g);//游戏结束、进行时if(isover){g.setColor(Color.black);g.setFont(new Font("Times",Font.BOLD,30));g.drawString("林giegie败北", 150, 200);}else{//画球、球拍g.fillOval(BALLX, BALLY, BALL_SIZE, BALL_SIZE);g.fillRect(RACKETX, RACKETY, RACKET_WIDTH, RACKET_HEIGHT);}}}//组装组件public void inti(){class listenere extends KeyAdapter{@Overridepublic void keyPressed(KeyEvent e) {// TODO Auto-generated method stubsuper.keyPressed(e);int s=e.getKeyCode();if(RACKETX>=0&&s==KeyEvent.VK_LEFT){RACKETX-=10;}if(RACKETX<=TABLE_WIDTH-RACKET_WIDTH&&s==KeyEvent.VK_RIGHT){RACKETX+=10;}}}listenere listener=new listenere();Mycanvas Mycan=new Mycanvas();frame.addKeyListener(listener);Mycan.addKeyListener(listener);class task implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub//小球到达窗口两侧if(BALLX<=0||BALLX>=TABLE_WIDTH-BALL_SIZE)SPEEDX=-SPEEDX;//小球到达顶部if(BALLY<=0)SPEEDY=-SPEEDY;//小球接触到球拍if(BALLX>RACKETX&&BALLX<RACKETX+RACKET_WIDTH&&BALLY>=RACKETY-BALL_SIZE)SPEEDY=-SPEEDY;//球拍没接住小球if(BALLY>=RACKETY&&(BALLX<RACKETX-BALL_SIZE||BALLX>RACKETX+BALL_SIZE)){isover=true;Mycan.repaint();timer.stop();}BALLX+=SPEEDX;BALLY+=SPEEDY;Mycan.repaint();}}timer = new Timer(100,new task());timer.start();Mycan.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));frame.add(Mycan);//设置frame最佳大小,并可视frame.pack();frame.setVisible(true);}public static void main(String[] args) {// TODO Auto-generated method stubnew checkb().inti();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。