模拟物体动态

package com.sanxia.javabase.chap8.swing;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class SnakeGame {
    public static void main(String[] args) {
       JFrame jf = new JFrame();
       SnakeGame sg = new SnakeGame();
       sg.init(jf, 800, 600);
       final SnakePanel sp = new SnakePanel();
       jf.add(sp);
       jf.addKeyListener(new KeyAdapter() {
           @Override
        public void keyReleased(KeyEvent e) {
            int keyCode = e.getKeyCode();
            System.out.println("keyCode="+keyCode);
            switch (keyCode) {
            case KeyEvent.VK_LEFT:
                sp.x-=3;
                break;
            case KeyEvent.VK_RIGHT:
                sp.x+=3;
                break;
            case KeyEvent.VK_UP:
                sp.y-=3;
                break;
            case KeyEvent.VK_DOWN:
                sp.y+=3;
                break;
            default:
                break;
            }
            sp.repaint();
        }
    });
    }
    
    public void init(JFrame frame,int formWidth,int formHeight){
        //设置当前窗体可见,默认不可见
                frame.setVisible(true);
                //int formWidth = 300;
                //int formHeight = 200;
                //设置当前窗体的宽和高
                frame.setSize(formWidth, formHeight);
                frame.setTitle("我的贪食蛇....");
                Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
                //通过Dimension类的对象dim可以获取到屏幕的宽和高
                int screenWidth = dim.width;
                int screenHeight = dim.height;
                System.out.println("当前屏幕的分辨率为:"+screenWidth+"*"+screenHeight);
            
                
                int x = (screenWidth-formWidth)/2;
                int y = (screenHeight-formHeight)/2;;
                //设置当前窗体出现在窗口中坐标位置,即x轴的坐标值和y轴的坐标值
                frame.setLocation(x, y);
                
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

class SnakePanel extends JPanel{
    private static final long serialVersionUID = 1L;
    int x = 120;
    int y = 50;
    @Override
    public void paint(Graphics g) {    
        super.paint(g);//抹去运动轨迹
        g.setColor(Color.RED);
        Font font = new Font("隶书", Font.BOLD, 30);
        g.setFont(font);
        g.drawString("哈哈哈,大家下午好啊,打起精神哦!", 30, 50);
        g.setColor(Color.BLUE);
        //空心圆
        g.drawOval(60, 50, 30, 30);
        //实心圆
        g.fillOval(x, y, 30, 30);
    }
}

 

posted @ 2016-08-10 15:59  tt香薷  阅读(202)  评论(0编辑  收藏  举报