初步完成功能

This commit is contained in:
hanaxilo 2021-08-24 00:09:46 +08:00
parent 1abd883544
commit 7a3e2fe60f
2 changed files with 91 additions and 44 deletions

View File

@ -18,8 +18,20 @@ public class Demo {
int x1 =Demo1.broken1.getHeight();
int y = Demo1.broken2.getWidth();
int y1 = Demo1.broken1.getWidth();
System.out.println("X:"+x+"_Y:"+y);
System.out.println("X1:"+x1+"_Y1:"+y1);
//System.out.println("X:"+x+"_Y:"+y);
//System.out.println("X1:"+x1+"_Y1:"+y1);
ArrayList<String>a = new ArrayList<>();
a.add("1");
a.add("2");
a.add("3");
System.out.println("A:"+a);
ArrayList<String> b = new ArrayList();
b.add("4");
b.add("5");
b.add("6");
a = (ArrayList<String>)b.clone();
System.out.println("A:"+a);
}
}

View File

@ -1,8 +1,7 @@
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
@ -12,8 +11,11 @@ import javax.imageio.ImageIO;
public class Fanning extends JPanel {
public static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
public static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;
//public static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
// public static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;
public static final int WIDTH = 500;
public static final int HEIGHT = 700;
public static BufferedImage background;
public static BufferedImage start;
@ -37,18 +39,16 @@ public class Fanning extends JPanel {
public static BufferedImage broken2;
static {
try {
background = ImageIO.read(Fanning.class.getResource("background.png"));
// background = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
// background = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
start = ImageIO.read(Fanning.class.getResource("start.png"));
//start = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
pause = ImageIO.read(Fanning.class.getResource("pause.png"));
// pause = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
// pause = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
hen0 = ImageIO.read(Fanning.class.getResource("hen0.png"));
//hen0 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
@ -57,19 +57,19 @@ public class Fanning extends JPanel {
//hen1 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
egg0 = ImageIO.read(Fanning.class.getResource("egg0.png"));
// egg0 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
// egg0 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
egg1 = ImageIO.read(Fanning.class.getResource("egg1.png"));
//egg1 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
egg2 = ImageIO.read(Fanning.class.getResource("egg2.png"));
// egg2 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
// egg2 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
egg3 = ImageIO.read(Fanning.class.getResource("egg3.png"));
//egg3 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
egg4 = ImageIO.read(Fanning.class.getResource("egg4.png"));
// egg4 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
// egg4 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
eggCracked0 = ImageIO.read(Fanning.class.getResource("eggCracked0.png"));
//eggCracked0 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
@ -78,7 +78,7 @@ public class Fanning extends JPanel {
//eggCracked1 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
eggCracked2 = ImageIO.read(Fanning.class.getResource("eggCracked2.png"));
// eggCracked2 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
// eggCracked2 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
eggCracked3 = ImageIO.read(Fanning.class.getResource("eggCracked3.png"));
//eggCracked3 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
@ -93,43 +93,45 @@ public class Fanning extends JPanel {
//chicken1 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
broken0 = ImageIO.read(Fanning.class.getResource("broken0.png"));
// broken0 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
// broken0 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
broken1 = ImageIO.read(Fanning.class.getResource("broken1.png"));
//broken1 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
broken2 = ImageIO.read(Fanning.class.getResource("broken2.png"));
// broken2 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
// broken2 = new BufferedImage(WIDTH/20, HEIGHT/50,BufferedImage.TYPE_INT_RGB);
} catch (Exception e) {
e.printStackTrace();
}
}
public static final int START = 0;
public static final int RUNNING = 1;
public static final int PAUSE= 2;
public static final int PAUSE = 2;
public static final int GAME_OVER = 3;
private int state = START;
private Hen hen = new Hen();
private ArrayList <EggChicken> eggChickensOBJ = new ArrayList<>();
private ArrayList<EggChicken> eggChickensOBJ = new ArrayList<>();
public void action() {
EggChicken eggChicken = new EggChicken();
MouseAdapter l = new MouseAdapter() {
// 重写鼠标移动
public void mouseMoved(MouseEvent e) {
if(state==RUNNING){
int x = e.getX();
int y = e.getY();
hen.moveTo(x, y);
if (state == RUNNING) {
int henX = e.getX();
int henY = e.getY();
hen.moveTo(henX, henY);
}
}
public void mouseClicked(MouseEvent e) {
switch(state){
switch (state) {
case START:
state = RUNNING;
break;
@ -140,32 +142,57 @@ public class Fanning extends JPanel {
case RUNNING:
int x = e.getX();
int y = e.getY();
EggChicken eggChicken = new EggChicken();
eggChicken.appear(x,y);
eggChickensOBJ.add(eggChicken);
//EggChicken eggChicken = new EggChicken();
eggChicken.appear(x, y);
// eggChickensOBJ.add(eggChicken);
break;
}
}
public void mouseExited(MouseEvent e) {
if(state==RUNNING)
if (state == RUNNING)
state = PAUSE;
}
public void mouseEntered(MouseEvent e) {
if(state==PAUSE)
state=RUNNING;
if (state == PAUSE)
state = RUNNING;
}
};
this.addMouseListener(l);// 处理鼠标操作事件
this.addMouseMotionListener(l);// 处理鼠标移动事件
addKeyListener(new KeyListener(){
@Override
public void keyTyped(KeyEvent e) {
System.out.println(e.getKeyCode()+"键盘点击");
}
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode()+"键盘点击");
switch (state){
case RUNNING:
eggChickensOBJ.add(eggChicken);
break;
}
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
});
int interval = 10;// 时间间隔以毫秒为单位
int interval1 = 10;// 时间间隔以毫秒为单位
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
if(state==RUNNING){
if (state == RUNNING) {
stepAction();
outOfBoundsAction();
}
@ -175,17 +202,24 @@ public class Fanning extends JPanel {
}
public void outOfBoundsAction(){
for (int i = eggChickensOBJ.size()-1;i>=0;i--) {
if (eggChickensOBJ.get(i).outOfBounds()) {
eggChickensOBJ.remove(i);
public void outOfBoundsAction() {
ArrayList<EggChicken> eggChickensArrayList = new ArrayList<>();
for (int i = 0; i < eggChickensOBJ.size(); i++) {
if (!eggChickensOBJ.get(i).outOfBounds()) {
eggChickensArrayList.add(eggChickensOBJ.get(i));
}
}
eggChickensOBJ = (ArrayList<EggChicken>) eggChickensArrayList.clone();
/* for (int i = eggChickensOBJ.size()-1;i>=0;i--) {
if (eggChickensOBJ.get(i).outOfBounds()) {
eggChickensOBJ.remove(i);
}
}*/
}
public void stepAction(){
public void stepAction() {
hen.step();
for (int i=0;i<eggChickensOBJ.size();i++) {
for (int i = 0; i < eggChickensOBJ.size(); i++) {
eggChickensOBJ.get(i).step();
}
}
@ -198,12 +232,12 @@ public class Fanning extends JPanel {
}
public void paintHen(Graphics g){
g.drawImage(hen.image,hen.x,hen.y,null);
public void paintHen(Graphics g) {
g.drawImage(hen.image, hen.x, hen.y, null);
}
public void paintEgg(Graphics g){
for (EggChicken c:eggChickensOBJ) {
public void paintEgg(Graphics g) {
for (EggChicken c : eggChickensOBJ) {
g.drawImage(c.image, c.x, c.y, null);
}
}
@ -211,15 +245,16 @@ public class Fanning extends JPanel {
/**
* 画状态
*
* @param g
*/
public void paintState(Graphics g) {
switch(state){
switch (state) {
case START:
g.drawImage(start, 0, 0, null);
break;
case PAUSE:
g.drawImage(pause, 0, 0,null);
g.drawImage(pause, 0, 0, null);
break;
}
}
@ -229,7 +264,7 @@ public class Fanning extends JPanel {
Fanning game = new Fanning();
frame.add(game);
frame.setUndecorated(true);
frame.setSize(WIDTH,HEIGHT);
frame.setSize(WIDTH, HEIGHT);
frame.setAlwaysOnTop(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);