zoukankan      html  css  js  c++  java
  • 模拟物体动态

    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);
        }
    }
  • 相关阅读:
    C#趣味程序---车牌号推断
    使用 C# 开发智能手机软件:推箱子(十四)
    【Oracle错误集锦】:ORA-12154: TNS: 无法解析指定的连接标识符
    java中你确定用对单例了吗?
    linux tty设置详解
    tty linux 打开和设置范例
    C和C++之间库的互相调用
    Android 编译参数 LOCAL_MODULE_TAGS
    pthread_once 和 pthread_key
    Android系统root破解原理分析
  • 原文地址:https://www.cnblogs.com/tt-t/p/5757118.html
Copyright © 2011-2022 走看看