如鹏java学习进程 吃金币游戏(时间限制,陷阱,随机金币位置)

来源:互联网 发布:免费微信数据恢复软件 编辑:程序博客网 时间:2024/05/21 12:08
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.KeyEvent;


import com.rupeng.game.GameCore;


public class eatCoinFinal implements Runnable {


@Override
public void run() {
GameCore.setGameSize(700, 700);


int[] xS = new int[9];
int[] yS = new int[9];
for (int a = 0; a < xS.length; a++) {
xS[a] = GameCore.rand(0, 600);
yS[a] = GameCore.rand(0, 600);
}


boolean[] coinS = new boolean[xS.length];
int[] coinNums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };


for (int a = 0; a < xS.length; a++) {
int coinNum = coinNums[a];
GameCore.createSprite(coinNum, "coin");
int coinX = xS[a];
int coinY = yS[a];
GameCore.setSpritePosition(coinNum, coinX, coinY);
GameCore.playSpriteAnimate(coinNum, "rotate", true);
}


int[] mineNums = { 11, 22, 33 };
int[] mineXDate = { 120, 160, 310 };
int[] mineYDate = { 120, 160, 310 };
for (int a = 0; a < mineNums.length; a++) {
GameCore.createSprite(mineNums[a], "bomb");
int mineX = mineXDate[a];
int mineY = mineYDate[a];
GameCore.setSpritePosition(mineNums[a], mineX, mineY);
GameCore.playSpriteAnimate(mineNums[a], "laser", true);
}


int marioNum = 0;
GameCore.createSprite(marioNum, "mario");
GameCore.setSpritePosition(marioNum, 0, 0);
GameCore.setSpriteFlipX(marioNum, true);
GameCore.playSpriteAnimate(marioNum, "walk", true);


Dimension gameSize = GameCore.getGameSize();
int gameWidth = gameSize.width;
int gameHeight = gameSize.height;


Dimension marioSize = GameCore.getSpriteSize(marioNum);
int marioWidth = marioSize.width;
int marioHeight = marioSize.height;


int coinPicNum = 0;
int coinTexNum = 0;


GameCore.createImage(coinPicNum, "coin.png");
GameCore.setImagePosition(coinPicNum, 700, 0);
GameCore.createText(coinTexNum, "X0");
GameCore.setTextFontSize(coinTexNum, 50);
GameCore.setTextColor(coinTexNum, Color.black);
GameCore.setTextPosition(coinPicNum, 760, 1);


long time = System.currentTimeMillis();
while (true) {


int keyCode = GameCore.getPressedKeyCode();
Point marioP = GameCore.getSpritePosition(marioNum);
int marioX = marioP.x;
int marioY = marioP.y;


if (keyCode == KeyEvent.VK_LEFT) {
if (marioX > 0) {
marioX--;
GameCore.setSpriteFlipX(marioNum, false);
GameCore.setSpritePosition(marioNum, marioX, marioY);
}
} else if (keyCode == KeyEvent.VK_RIGHT) {
if (marioX <= gameWidth - marioWidth) {
marioX++;
GameCore.setSpriteFlipX(marioNum, true);
GameCore.setSpritePosition(marioNum, marioX, marioY);
}
} else if (keyCode == KeyEvent.VK_UP) {
if (marioY > 0) {
marioY--;
GameCore.setSpritePosition(marioNum, marioX, marioY);
}
} else if (keyCode == KeyEvent.VK_DOWN) {
if (marioY <= gameHeight - marioHeight) {
marioY++;
GameCore.setSpritePosition(marioNum, marioX, marioY);
}
}
long nowtime = System.currentTimeMillis();
if (nowtime - time > 30000) {
GameCore.alert("times up");
GameCore.exit();
} else {


for (int i = 0; i < coinNums.length; i++) {
int coinNum = coinNums[i];
boolean coinSS = coinS[i];
if (coinSS) {
continue;
}
int coinX = xS[i];
int coinY = yS[i];


Dimension coinSize = GameCore.getSpriteSize(coinNum);


int coinWidth = coinSize.width;
int coinHeight = coinSize.height;
int coinCenterX = coinX + coinWidth / 2;
int coinCenterY = coinY + coinHeight / 2;
int marioCenterX = marioX + marioWidth / 2;
int marioCenterY = marioY + marioHeight / 2;


double distanceCoinMario = Math.pow((coinCenterX - marioCenterX) * (coinCenterX - marioCenterX)
+ (coinCenterY - marioCenterY) * (coinCenterY - marioCenterY), 0.5);


if (distanceCoinMario < 15) {
GameCore.hideSprite(coinNum);
coinS[i] = true;


int eatCoin = 0;
for (int b = 0; b < coinS.length; b++) {
if (coinS[b]) {
eatCoin++;
}
}
GameCore.setText(coinTexNum, "X" + eatCoin);
if (eatCoin == coinNums.length) {
GameCore.alert("庆祝");
GameCore.exit();
}
}


}
}
for (int i = 0; i < mineNums.length; i++) {
Dimension mineSize = GameCore.getSpriteSize(mineNums[i]);
int mineX = mineXDate[i];
int mineY = mineYDate[i];
int marioCenterX = marioX + marioWidth / 2;
int marioCenterY = marioY + marioHeight / 2;
int mineWidth = mineSize.width;
int mineHeight = mineSize.height;
int mineCenterX = mineX + mineWidth / 2;
int mineCenterY = mineY + mineHeight / 2;
double distanceMineMario = Math.pow((mineCenterX - marioCenterX) * (mineCenterX - marioCenterX)
+ (mineCenterY - marioCenterY) * (mineCenterY - marioCenterY), 0.5);
if (distanceMineMario < 15) {
GameCore.alert("you are dead");
GameCore.exit();
}
}


GameCore.pause(1);


}


}


public static void main(String[] args) {
GameCore.start(new eatCoinFinal());


}


}
原创粉丝点击