package pintu;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class TanChiShe extends JFrame implements KeyListener {
private int x = 5; //蛇的横坐标
private int y = 5; //蛇的纵坐标
private int a = 303; //食物的横坐标
private int b = 303; //食物的纵坐标
private int count = 1; //计分器
ArrayList<int[]> list = new ArrayList<>();
public TanChiShe(){
list.add(new int[]{5,5});
// list.add(x);list.add(y);
//初始化界面
initJFrame();
//初始化图片
initImage();
this.setVisible(true); //显示
}
public static void main(String[] args) {
new TanChiShe();
}
int x1 = 0,y1 = 0;
//初始化图片
private void initImage() {
this.getContentPane().removeAll(); //清空内容
if (a == list.get(0)[0] && b == list.get(0)[1]){
a += 300;
b += 300;
System.out.println("得了" + count + "分");
count++;
list.add(new int[]{x1,y1});
// ImageIcon icon = new ImageIcon("D:\\java代码\\heima\\pintu\\1.png");
// JLabel jLabel = new JLabel(icon);
// jLabel.setBounds(x1,y1,20,20); //指定容器位置
// this.getContentPane().add(jLabel); //获取主容器,把管理器添加到界面中
}
//🐍
ImageIcon icon = new ImageIcon("D:\\java代码\\heima\\pintu\\1.png"); //创建一个图片 ImageIcon 的对象
JLabel jLabel = new JLabel(icon); //创建一个 JLabel 的对象
if (list.get(0)[0] < 0){
list.get(0)[0] = 585;
jLabel.setBounds(list.get(0)[0],list.get(0)[1],20,20);
} else if (list.get(0)[0] > 590) {
list.get(0)[0] = 5;
jLabel.setBounds(list.get(0)[0],list.get(0)[1],20,20);
} else if (list.get(0)[1] < 0) {
list.get(0)[1] = 585;
jLabel.setBounds(list.get(0)[0],list.get(0)[1],20,20);
} else if (list.get(0)[1] > 590) {
list.get(0)[1] = 5;
jLabel.setBounds(list.get(0)[0],list.get(0)[1],20,20);
} //
//蛇头
jLabel.setBounds(list.get(0)[0],list.get(0)[1],20,20);
x1 = list.get(0)[0];y1 = list.get(0)[1];
this.getContentPane().add(jLabel);
//蛇身
for (int i = list.size(); i > 1; i--) {
list.get(i-1)[0] = list.get(i-2)[0];
list.get(i-1)[1] = list.get(i-2)[1];
ImageIcon icon1 = new ImageIcon("D:\\java代码\\heima\\pintu\\1.png"); //创建一个图片 ImageIcon 的对象
JLabel jLabel1 = new JLabel(icon); //创建一个 JLabel 的对象
jLabel1.setBounds(list.get(i-1)[0],list.get(i-1)[1],20,20);
this.getContentPane().add(jLabel1);
}
/*jLabel.setBounds(list.get(0)[0],list.get(0)[1],20,20); //指定容器位置
x1 = list.get(0)[0];y1 = list.get(0)[1];
this.getContentPane().add(jLabel); //获取主容器,把管理器添加到界面中*/
//食物
ImageIcon icon2 = new ImageIcon("D:\\java代码\\heima\\pintu\\2.png");
JLabel jLabel2 = new JLabel(icon2);
//jLabel2.setBounds(a,b,20,20);
Random r = new Random();
while ((a < 0 || a >280) || (b < 0 || b >280)){
int j = r.nextInt(300);
a = (j / 20) * 20 + 5;
j = r.nextInt(300);
b = (j / 20) * 20 + 5;
}
jLabel2.setBounds(a,b,20,20);
/*Random r = new Random();
jLabel2.setBounds(r.nextInt(300),r.nextInt(300),20,20);*/
this.getContentPane().add(jLabel2);
//边墙
for (int i = 2; i < 605; i+=3) {
ImageIcon icon1 = new ImageIcon("D:\\java代码\\heima\\pintu\\2.png");
JLabel jLabel1 = new JLabel(icon1);
jLabel1.setBounds(i,2,3,3);
this.getContentPane().add(jLabel1);
}
for (int i = 2; i < 605; i+=3) {
ImageIcon icon1 = new ImageIcon("D:\\java代码\\heima\\pintu\\2.png");
JLabel jLabel1 = new JLabel(icon1);
jLabel1.setBounds(2,i,3,3);
this.getContentPane().add(jLabel1);
}
for (int i = 2; i < 605; i+=3) {
ImageIcon icon1 = new ImageIcon("D:\\java代码\\heima\\pintu\\2.png");
JLabel jLabel1 = new JLabel(icon1);
jLabel1.setBounds(i,605,3,3);
this.getContentPane().add(jLabel1);
}
for (int i = 2; i < 605; i+=3) {
ImageIcon icon1 = new ImageIcon("D:\\java代码\\heima\\pintu\\2.png");
JLabel jLabel1 = new JLabel(icon1);
jLabel1.setBounds(605,i,3,3);
this.getContentPane().add(jLabel1);
}
this.getContentPane().repaint(); //刷新界面
}
public void initJFrame(){
this.setSize(630,650);
this.setTitle("吃不胖游戏"); //标题
this.setLocationRelativeTo(null); //设置界面居中
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //关闭
this.setLayout(null); //取消默认的居中放置,只有取消了才会按照xy轴的形式添加
this.addKeyListener(this); //给整个界面添加事件
}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {
//对上,下,左,右判断
//左:37 上:38 右:39 下:40
int code = e.getKeyCode();
/*System.out.println(code);*/
if (code == 37){
list.get(0)[0]-=20;
initImage();
} else if (code == 38) {
list.get(0)[1]-=20;
initImage();
} else if (code == 39) {
list.get(0)[0]+=20;
initImage();
} else if (code == 40){
list.get(0)[1]+=20;
initImage();
}
}
}
贪吃蛇游戏
最新推荐文章于 2024-10-05 13:01:49 发布