@ -0,0 +1,12 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
### Example user template template
|
||||
### Example user template
|
||||
|
||||
# IntelliJ project files
|
||||
.idea
|
||||
*.iml
|
||||
out
|
||||
gen
|
||||
/bin
|
||||
.settings
|
||||
/classes
|
@ -0,0 +1 @@
|
||||
# Small-plane-game
|
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 408 B |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 44 KiB |
@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Main-Class: main.Game
|
||||
|
@ -0,0 +1,65 @@
|
||||
package main;
|
||||
|
||||
import main.Enum.FlyingObjectState;
|
||||
import main.Enum.GameState;
|
||||
import main.entry.Bullet;
|
||||
import main.entry.FlyingObject;
|
||||
|
||||
import java.util.concurrent.CyclicBarrier;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
public class Deamon extends Thread {
|
||||
private ExecutorService executorService = null;
|
||||
private Game game = null;
|
||||
private CyclicBarrier cyclicBarrier;
|
||||
|
||||
public Deamon(Game game1) {
|
||||
game = game1;
|
||||
executorService = Executors.newCachedThreadPool();
|
||||
|
||||
}
|
||||
|
||||
public void submit(FlyingObject temp) {
|
||||
if (temp == null) return;
|
||||
executorService.execute(temp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
super.run();
|
||||
while (true) {
|
||||
try {
|
||||
Thread.sleep(10);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(game.getState()!= GameState.RUNNING)
|
||||
continue;
|
||||
if(game.getPlayer().getState()== FlyingObjectState.DEAD){
|
||||
game.getPlayer().setX(150);
|
||||
game.getPlayer().setY(400);
|
||||
game.getPlayer().setState(FlyingObjectState.LIVE);
|
||||
this.submit(game.getPlayer());
|
||||
}
|
||||
FlyingObject fo = game.addEnemy();
|
||||
if (fo != null)
|
||||
executorService.submit(fo);
|
||||
Bullet[] bs = game.shootAction();
|
||||
for (int i = 0; bs != null && i < bs.length; i++) {
|
||||
executorService.submit(bs[i]);
|
||||
}
|
||||
game.checkBulletAction();
|
||||
game.outOfBoundsAction();
|
||||
game.checkGameOverAction();
|
||||
game.getMainFrame().repaint();
|
||||
if (game.getState() == GameState.GAME_OVER) {
|
||||
game.saveHighestScore();
|
||||
game.clearAllFlyingObject();
|
||||
game.getPlayer().setState(FlyingObjectState.DEAD);
|
||||
game.setScore(0);
|
||||
game.getPlayer().setLife(3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package main.Enum;
|
||||
|
||||
public enum FlyingObjectState {
|
||||
DEAD,LIVE,STOP;
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package main.Enum;
|
||||
|
||||
public enum GameState {
|
||||
START,RUNNING,PAUSE,GAME_OVER;
|
||||
}
|
@ -0,0 +1,150 @@
|
||||
package main;
|
||||
|
||||
import main.Enum.FlyingObjectState;
|
||||
import main.Enum.GameState;
|
||||
import main.entry.Bullet;
|
||||
import main.entry.FlyingObject;
|
||||
import main.entry.Player;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.util.Set;
|
||||
|
||||
public class Frame extends JPanel {
|
||||
|
||||
static {
|
||||
try {
|
||||
background = ImageIO.read(new File("images/background.png"));
|
||||
start = ImageIO.read(new File("images/start.png"));
|
||||
airplane = ImageIO.read(new File("images/airplane.png"));
|
||||
bee = ImageIO.read(new File("images/bee.png"));
|
||||
bullet = ImageIO.read(new File("images/bullet.png"));
|
||||
player0 = ImageIO.read(new File("images/player0.png"));
|
||||
player1 = ImageIO.read(new File("images/player1.png"));
|
||||
pause = ImageIO.read(new File("images/pause.png"));
|
||||
gameover = ImageIO.read(new File("images/gameover.png"));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static final int WIDTH = 400;
|
||||
public static final int HEIGHT = 654;
|
||||
public static int ID;
|
||||
|
||||
public static BufferedImage background;
|
||||
public static BufferedImage start;
|
||||
public static BufferedImage airplane;
|
||||
public static BufferedImage bee;
|
||||
public static BufferedImage bullet;
|
||||
public static BufferedImage player0;
|
||||
public static BufferedImage player1;
|
||||
public static BufferedImage pause;
|
||||
public static BufferedImage gameover;
|
||||
|
||||
public Game game;
|
||||
|
||||
public Frame(Game gamet){
|
||||
ID=1000;
|
||||
game=gamet;
|
||||
this.init();
|
||||
JFrame frame = new JFrame("飞机大战");
|
||||
frame.add(this);
|
||||
frame.setSize(WIDTH, HEIGHT);
|
||||
frame.setAlwaysOnTop(true);
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
frame.setIconImage(new ImageIcon("images/icon.jpg").getImage());
|
||||
frame.setLocationRelativeTo(null);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
|
||||
public void paint(Graphics g) {
|
||||
Set<FlyingObject> flyings = game.getFlings();
|
||||
Set<Bullet> bullets = game.getBullets();
|
||||
Player player = game.getPlayer();
|
||||
g.drawImage(background, 0, 0, null);
|
||||
if(player!=null)
|
||||
g.drawImage(player.getImage(), player.getX(), player.getY(), null);
|
||||
for(Bullet bl : bullets){
|
||||
g.drawImage(bl.getImage(), bl.getX() - bl.getWidth() / 2, bl.getY(), null);
|
||||
}
|
||||
for (FlyingObject fo:flyings)
|
||||
g.drawImage(fo.getImage(), fo.getX(), fo.getY(), null);
|
||||
paintScore(g);
|
||||
paintState(g);
|
||||
}
|
||||
|
||||
public void paintScore(Graphics g) {
|
||||
int x = 10,y = 25;
|
||||
g.setColor(Color.RED);
|
||||
g.setFont(new Font(null, Font.BOLD, 22));
|
||||
g.drawString("SCORE:" + game.getScore(), x, y);
|
||||
y=y+20;
|
||||
g.drawString("LIFE:" + game.getPlayer().getLife(), x, y);
|
||||
y=y+25;
|
||||
g.drawString("ID:" + ID, x, y);
|
||||
y=y+25;
|
||||
g.drawString("Highest score:" + game.getHighestScore(), x, y);
|
||||
}
|
||||
|
||||
public void paintState(Graphics g) {
|
||||
switch (game.getState()) {
|
||||
case START:
|
||||
g.drawImage(start, 0, 0, null);
|
||||
break;
|
||||
case PAUSE:
|
||||
g.drawImage(pause, 0, 0, null);
|
||||
break;
|
||||
case GAME_OVER:
|
||||
g.drawImage(gameover, 0, 0, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void init() {
|
||||
MouseAdapter Ma = new MouseAdapter() {
|
||||
Player player = game.getPlayer();
|
||||
Set<FlyingObject> flyings = game.getFlings();
|
||||
Set<Bullet> bullets = game.getBullets();
|
||||
public void mouseMoved(MouseEvent e) {
|
||||
if (game.getState() == GameState.RUNNING)
|
||||
player.moveTo(e.getX(), e.getY());
|
||||
}
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
switch (game.getState()) {
|
||||
case START:
|
||||
game.setScore(0);
|
||||
game.setState(GameState.RUNNING);
|
||||
break;
|
||||
case GAME_OVER:
|
||||
game.setState(GameState.START);
|
||||
repaint();
|
||||
break;
|
||||
case RUNNING:
|
||||
game.setState(GameState.PAUSE);
|
||||
for(Bullet bl : bullets)
|
||||
bl.setState(FlyingObjectState.STOP);
|
||||
for (FlyingObject fo:flyings)
|
||||
fo.setState(FlyingObjectState.STOP);
|
||||
break;
|
||||
case PAUSE:
|
||||
game.setState(GameState.RUNNING);
|
||||
for(Bullet bl : bullets) {
|
||||
bl.setState(FlyingObjectState.LIVE);
|
||||
}
|
||||
for (FlyingObject fo:flyings) {
|
||||
fo.setState(FlyingObjectState.LIVE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
this.addMouseListener(Ma);
|
||||
this.addMouseMotionListener(Ma);
|
||||
}
|
||||
}
|
@ -0,0 +1,197 @@
|
||||
package main;
|
||||
|
||||
import main.Enum.FlyingObjectState;
|
||||
import main.Enum.GameState;
|
||||
import main.entry.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
public class Game {
|
||||
|
||||
private static int flyIndex = 0, shootIndex = 0;
|
||||
|
||||
private Frame mainFrame;
|
||||
private Deamon deamon;
|
||||
|
||||
volatile private GameState state;
|
||||
private int highestScore;
|
||||
private int score = 0;
|
||||
|
||||
private HashSet<FlyingObject> flings;
|
||||
private HashSet<Bullet> bullets;
|
||||
private Player player = null;
|
||||
|
||||
public Game() {
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Game game = new Game();
|
||||
game.score = 0;
|
||||
game.highestScore=0;
|
||||
game.state=GameState.START;
|
||||
game.player = new Player();
|
||||
game.flings = new HashSet<>();
|
||||
game.bullets = new HashSet<>();
|
||||
game.mainFrame = new Frame(game);
|
||||
game.deamon = new Deamon(game);
|
||||
game.deamon.start();
|
||||
}
|
||||
|
||||
public Frame getMainFrame() {
|
||||
return mainFrame;
|
||||
}
|
||||
|
||||
public void setState(GameState state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public GameState getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setScore(int score) {
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
public int getHighestScore() {
|
||||
return highestScore;
|
||||
}
|
||||
|
||||
public void setHighestScore(int highestScore) {
|
||||
this.highestScore = highestScore;
|
||||
}
|
||||
|
||||
public int getScore() {
|
||||
return score;
|
||||
}
|
||||
|
||||
public Set<FlyingObject> getFlings() {
|
||||
return flings;
|
||||
}
|
||||
|
||||
public Set<Bullet> getBullets() {
|
||||
return bullets;
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
||||
public void setPlayer(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public FlyingObject addEnemy() {
|
||||
flyIndex++;
|
||||
FlyingObject obj = null;
|
||||
if (flyIndex % 40 == 0) {
|
||||
obj = randomEnemy();
|
||||
flings.add(obj);
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
public Bullet[] shootAction() {
|
||||
shootIndex++;
|
||||
Bullet[] bs = null;
|
||||
if (shootIndex % 30 == 0) {
|
||||
bs = player.shoot();
|
||||
for (int i = 0; i < bs.length; i++)
|
||||
bullets.add(bs[i]);
|
||||
}
|
||||
return bs;
|
||||
}
|
||||
|
||||
public void checkBulletAction() {
|
||||
for (Bullet bl: bullets) {
|
||||
checkBullet(bl);
|
||||
}
|
||||
}
|
||||
|
||||
public void outOfBoundsAction() {
|
||||
Iterator it= flings.iterator();
|
||||
while (it.hasNext()) {
|
||||
FlyingObject fo =(FlyingObject)it.next();
|
||||
if (fo.outOfBounds()) {
|
||||
fo.setState(FlyingObjectState.DEAD);
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
it=bullets.iterator();
|
||||
while (it.hasNext()) {
|
||||
Bullet bl =(Bullet)it.next();
|
||||
if (bl.outOfBounds()) {
|
||||
bl.setState(FlyingObjectState.DEAD);
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void checkGameOverAction() {
|
||||
Iterator it= flings.iterator();
|
||||
while(it.hasNext()){
|
||||
FlyingObject fo=(FlyingObject) it.next();
|
||||
if (player.hit(fo)) {
|
||||
player.subLife();
|
||||
player.setDoubleFire(0);
|
||||
it.remove();
|
||||
fo.setState(FlyingObjectState.DEAD);
|
||||
}
|
||||
}
|
||||
if (player.getLife() <= 0) {
|
||||
state = GameState.GAME_OVER;
|
||||
}
|
||||
}
|
||||
|
||||
public void checkBullet(Bullet bullet) {
|
||||
for (FlyingObject fo : flings) {
|
||||
if (fo.shootBy(bullet)) {
|
||||
fo.setState(FlyingObjectState.DEAD);
|
||||
flings.remove(fo);
|
||||
if (fo instanceof Airplane) {
|
||||
Airplane airplane = (Airplane) fo;
|
||||
score += airplane.getScore();
|
||||
} else {
|
||||
Bee bee = (Bee) fo;
|
||||
switch (bee.getType()) {
|
||||
case 0:
|
||||
player.addDoubleFire();
|
||||
break;
|
||||
case 1:
|
||||
player.addLife();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void clearAllFlyingObject(){
|
||||
for(FlyingObject fo : flings)
|
||||
fo.setState(FlyingObjectState.DEAD);
|
||||
for(FlyingObject fo : bullets)
|
||||
fo.setState(FlyingObjectState.DEAD);
|
||||
flings.clear();
|
||||
bullets.clear();
|
||||
player.setState(FlyingObjectState.STOP);
|
||||
player.setDoubleFire(0);
|
||||
}
|
||||
|
||||
public static FlyingObject randomEnemy() {
|
||||
Random random = new Random();
|
||||
int type = random.nextInt(20);
|
||||
if (type < 4)
|
||||
return new Bee();
|
||||
else
|
||||
return new Airplane();
|
||||
}
|
||||
|
||||
public void saveHighestScore(){
|
||||
if(this.score>this.highestScore)
|
||||
highestScore=score;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package main.entry;
|
||||
|
||||
import main.Enum.FlyingObjectState;
|
||||
import main.Frame;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
|
||||
public class Airplane extends FlyingObject {
|
||||
private int speed = 3;
|
||||
|
||||
public Airplane(){
|
||||
this.image = Frame.airplane;
|
||||
width = image.getWidth();
|
||||
height = image.getHeight();
|
||||
y = -height;
|
||||
Random rand = new Random();
|
||||
x = rand.nextInt(Frame.WIDTH - width);
|
||||
state= FlyingObjectState.LIVE;
|
||||
}
|
||||
|
||||
public int getScore() {
|
||||
return 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean outOfBounds() {
|
||||
return y>Frame.HEIGHT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void step() {
|
||||
y += speed;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,43 @@
|
||||
package main.entry;
|
||||
|
||||
import main.Enum.FlyingObjectState;
|
||||
import main.Frame;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class Bee extends FlyingObject {
|
||||
private int xSpeed = 1;
|
||||
private int ySpeed = 2;
|
||||
private int awardType;
|
||||
|
||||
public Bee(){
|
||||
this.image = Frame.bee;
|
||||
width = image.getWidth();
|
||||
height = image.getHeight();
|
||||
y = -height;
|
||||
Random rand = new Random();
|
||||
x = rand.nextInt(Frame.WIDTH - width);
|
||||
awardType = rand.nextInt(2);
|
||||
state= FlyingObjectState.LIVE;
|
||||
}
|
||||
|
||||
public int getType(){
|
||||
return awardType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean outOfBounds() {
|
||||
return y>Frame.HEIGHT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void step() {
|
||||
x += xSpeed;
|
||||
y += ySpeed;
|
||||
if(x > Frame.WIDTH-width)
|
||||
xSpeed = -1;
|
||||
if(x < 0)
|
||||
xSpeed = 1;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package main.entry;
|
||||
|
||||
import main.Enum.FlyingObjectState;
|
||||
import main.Frame;
|
||||
|
||||
public class Bullet extends FlyingObject {
|
||||
private int speed = 3;
|
||||
|
||||
public Bullet(int x,int y){
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.image = Frame.bullet;
|
||||
state= FlyingObjectState.LIVE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void step(){
|
||||
y-=speed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean outOfBounds() {
|
||||
return y<0;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
package main.entry;
|
||||
|
||||
import main.Enum.FlyingObjectState;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
|
||||
public abstract class FlyingObject implements Runnable{
|
||||
protected int x;
|
||||
protected int y;
|
||||
protected int width;
|
||||
protected int height;
|
||||
protected BufferedImage image;
|
||||
protected FlyingObjectState state;
|
||||
protected Thread thread=null;
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public void setX(int x) {
|
||||
this.x = x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public void setY(int y) {
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
public void setWidth(int width) {
|
||||
this.width = width;
|
||||
}
|
||||
|
||||
public FlyingObjectState getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(FlyingObjectState state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
public void setHeight(int height) {
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
public BufferedImage getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
public void setImage(BufferedImage image) {
|
||||
this.image = image;
|
||||
}
|
||||
|
||||
public abstract boolean outOfBounds();
|
||||
|
||||
public abstract void step();
|
||||
|
||||
public boolean shootBy(Bullet bullet){
|
||||
int x = bullet.x;
|
||||
int y = bullet.y;
|
||||
return this.x<x && x<this.x+width && this.y<y && y<this.y+height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while(state!= FlyingObjectState.DEAD) {
|
||||
try {
|
||||
if(state!=FlyingObjectState.STOP)
|
||||
step();
|
||||
Thread.sleep(10);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package main.entry;
|
||||
|
||||
public class Gamer {
|
||||
private int id;
|
||||
private String name;
|
||||
private int score;
|
||||
|
||||
public Gamer(int id, String name, int score) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.score = score;
|
||||
}
|
||||
}
|
@ -0,0 +1,106 @@
|
||||
package main.entry;
|
||||
import main.Frame;
|
||||
import main.Enum.FlyingObjectState;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class Player extends FlyingObject {
|
||||
|
||||
private BufferedImage[] images = {};
|
||||
private int index = 0;
|
||||
|
||||
private int doubleFire;
|
||||
private int life;
|
||||
|
||||
public Player(){
|
||||
life = 3;
|
||||
doubleFire = 0;
|
||||
images = new BufferedImage[]{Frame.player0, Frame.player1};
|
||||
image = Frame.player0;
|
||||
width = image.getWidth();
|
||||
height = image.getHeight();
|
||||
x = 150;
|
||||
y = 400;
|
||||
state= FlyingObjectState.LIVE;
|
||||
}
|
||||
|
||||
public void setLife(int life) {
|
||||
this.life = life;
|
||||
}
|
||||
|
||||
public void setDoubleFire(int doubleFire) {
|
||||
this.doubleFire = doubleFire;
|
||||
}
|
||||
|
||||
public void addDoubleFire(){
|
||||
doubleFire = 40;
|
||||
}
|
||||
|
||||
public void addLife(){
|
||||
life++;
|
||||
}
|
||||
|
||||
public void subLife(){
|
||||
life--;
|
||||
}
|
||||
|
||||
public int getLife(){
|
||||
return life;
|
||||
}
|
||||
|
||||
public void moveTo(int x,int y){
|
||||
this.x = x - width/2;
|
||||
this.y = y - height/2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean outOfBounds() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public Bullet[] shoot(){
|
||||
int xStep = width/4;
|
||||
int yStep = 20;
|
||||
if(doubleFire>0){
|
||||
Bullet[] bullets = new Bullet[2];
|
||||
bullets[0] = new Bullet(x+xStep,y-yStep);
|
||||
bullets[1] = new Bullet(x+3*xStep,y-yStep);
|
||||
return bullets;
|
||||
}else{
|
||||
Bullet[] bullets = new Bullet[1];
|
||||
bullets[0] = new Bullet(x+2*xStep,y-yStep);
|
||||
return bullets;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void step() {
|
||||
if(images.length>0){
|
||||
image = images[index++/10%images.length];
|
||||
}
|
||||
}
|
||||
|
||||
public boolean hit(FlyingObject other){
|
||||
|
||||
int x1 = other.x - this.width/2;
|
||||
int x2 = other.x + this.width/2 + other.width;
|
||||
int y1 = other.y - this.height/2;
|
||||
int y2 = other.y + this.height/2 + other.height;
|
||||
|
||||
int Playerx = this.x + this.width/2;
|
||||
int Playery = this.y + this.height/2;
|
||||
|
||||
return Playerx>x1 && Playerx<x2 && Playery>y1 && Playery<y2;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|