//下面是个人制作的吃金币的小游戏的代码,
//文章底下还有附带游戏文件,可以看到游戏的输出效果(该游戏是使用如鹏网的游戏引擎)
//本人初学者技术有限,做得不好,勿怪!
package java1;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import com.rupeng.game.GameCore;
class haha2 implements Runnable
{
public static void main(String[] args)
{
GameCore.start(new haha2());
}
public void run()
{
GameCore.setGameTitle("吃金币游戏");
GameCore.loadBgView("71_141208145117_4.jpg");
int birdNum = 0;
int xbirdData = 200;// 精灵birdNum的横坐标
int ybirdData = 200;// 精灵birdNum的纵坐标
GameCore.createSprite(birdNum, "bird");
GameCore.setSpritePosition(birdNum, xbirdData, ybirdData);
GameCore.playSpriteAnimate(birdNum, "fly", true);
int[] xData = { 30, 165, 276, 279, 309, 349, 474, 502 };// 金币的横坐标
int[] yData = { 21, 36, 71, 89, 135, 269, 307, 342 };// 金币的纵坐标
boolean[] coinIsDead = new boolean[8];// 判断金币是否被吃掉
int[] coinNums = { 1, 2, 3, 4, 5, 6, 7, 8 };// 金币的编码
// 游戏窗口的大小
Dimension gameSize = GameCore.getGameSize();
int gameWidth = gameSize.width;
int gameHeight = gameSize.height - 20;
// 精灵的大小
Dimension birdSize = GameCore.getSpriteSize(birdNum);
int birdWidth = birdSize.width;
int birdHeight = birdSize.height;
// 右上角 大金币(图片)
int bigcoinNum = 00;
GameCore.createImage(bigcoinNum);
GameCore.setImageSource(bigcoinNum, "00.png");
GameCore.setImagePosition(bigcoinNum, 900, 0);
// 右上角 吃掉金币的数量(文本)
int deadcoinTextNum = 2;
GameCore.createText(deadcoinTextNum, "X0");
GameCore.setTextPosition(deadcoinTextNum, 930, 0);
GameCore.setTextFontSize(deadcoinTextNum, 30);
GameCore.setTextColor(deadcoinTextNum, Color.yellow);
// 金币的分布位置
for (int i = 0; i < coinNums.length; i++)
{
int xcoin = xData[i];
int ycoin = yData[i];
int coinNum = coinNums[i];
GameCore.createSprite(coinNum, "coin");
GameCore.playSpriteAnimate(coinNum, "rotate", true);
GameCore.setSpritePosition(coinNum, xcoin, ycoin);
}
// 键盘输入,控制birdNum的移动
while (true)
{
int ac = GameCore.getPressedKeyCode();
if (ac == KeyEvent.VK_UP && ybirdData > 0)
{
ybirdData = ybirdData - 5;
GameCore.pause(30);
GameCore.setSpritePosition(birdNum, xbirdData, ybirdData);
}
if (ac == KeyEvent.VK_DOWN && ybirdData < gameHeight - birdHeight)
{
ybirdData = ybirdData + 5;
GameCore.pause(30);
GameCore.setSpritePosition(birdNum, xbirdData, ybirdData);
}
if (ac == KeyEvent.VK_LEFT && xbirdData > 0)
{
GameCore.setSpriteFlipX(birdNum, true);
xbirdData = xbirdData - 5;
GameCore.pause(30);
GameCore.setSpritePosition(birdNum, xbirdData, ybirdData);
}
if (ac == KeyEvent.VK_RIGHT && xbirdData < gameWidth - birdWidth)
{
GameCore.setSpriteFlipX(birdNum, false);
xbirdData = xbirdData + 5;
GameCore.pause(30);
GameCore.setSpritePosition(birdNum, xbirdData, ybirdData);
}
for (int i = 0; i < coinNums.length; i++)
{
/*
* boolean coinIsDeadData = coinIsDead[i]; if (coinIsDeadData) {
* continue; }
*/
int coinNum = coinNums[i];
int xcoin = xData[i];
int ycoin = yData[i];
GameCore.setSpritePosition(coinNum, xcoin, ycoin);
// 先得到金币的大小
Dimension coinSize = GameCore.getSpriteSize(coinNum);
int coinWidth = coinSize.width;
int coinHeight = coinSize.height;
// 金币的中心位置
int coinCenterX = xcoin + coinWidth / 2;
int coinCenterY = ycoin + coinHeight / 2;
// bird精灵的中心位置
int birdCenterX = xbirdData + birdWidth / 2;
int birdCenterY = ybirdData + birdHeight / 2;
double distanceBirdCoin = Math.pow((coinCenterX - birdCenterX) * (coinCenterX - birdCenterX)
+ (coinCenterY - birdCenterY) * (coinCenterY - birdCenterY), 0.5);
int deadcoinCount = 0;
if (distanceBirdCoin < 20)
{
GameCore.hideSprite(coinNum);
// 计算吃掉金币的数量
for (int j = 0; j < coinIsDead.length; j++)
{
if (coinIsDead[j] == true)
{
deadcoinCount++;
}
}
GameCore.setText(deadcoinTextNum, "X" + deadcoinCount);
}
}
// GameCore.pause(456);
}
}
}
标签: