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);
}
}