Game gold coin version 2.0 new bomb function new game countdown function new victory failure detection function using the rupeng game engine to create a form one-dimensional array set gold coins,
The game code is as follows:
package com.swift;
import java.awt.Color;
import java.awt.Point;
import java.awt.event.KeyEvent;
import com.rupeng.game.GameCore;
/ **
* @author swift
* @version 2.0
* @category added a bomb function, if the elf eats a bomb and immediately dies, the game ends;
* @category added game countdown function, countdown 60 seconds
* @category added a game victory and failure function. After eating gold coins, you win, and you lose the bomb
* /
public class Coin2 implements Runnable {
public static void main (String [] args) {
GameCore.start (new Coin2 ());
}
@Override
public void run () {
// Set the form size, title, background
GameCore.setGameSize (800, 345);
GameCore.setGameTitle ("a small game that uses the keyboard to control the movement of the wizard");
GameCore.loadBgView ("bg.jpg");
// Set the appearance and appearance of female elves
int spriteGirl = 0;
GameCore.createSprite (spriteGirl, "guizi");
GameCore.playSpriteAnimate (spriteGirl, "run", true);
GameCore.setSpritePosition (spriteGirl, 140, 190);
// Use the array to place the number, abscissa, and ordinate of 8 gold coins
int [] coinNum = {1, 2, 3, 4, 5, 6, 7, 8};
int [] coinXDate = {100, 200, 300, 400, 500, 600, 700, 730};
int [] coinYDate = {140, 180, 150, 190, 140, 170, 160, 140};
// Use the array to place the number, abscissa and ordinate of 3 bombs
int [] bombNum = {9, 10, 11};
int [] bombXDate = {250, 450, 650};
int [] bombYDate = {160, 160, 190};
// boolean [] coinIsDead = new boolean [8];
// Set the gold coin picture displayed in the upper right corner and the number of gold coins eaten
GameCore.createImage (0);
GameCore.setImageSource (0, "bigCoin.png");
GameCore.setImagePosition (0, 710, 20);
GameCore.createText (0, "NUM");
GameCore.setTextColor (0, Color.WHITE);
GameCore.setTextPosition (0, 650, 25);
GameCore.createText (1, "0");
GameCore.setTextPosition (1, 760, 25);
GameCore.setTextColor (1, Color.WHITE);
// Set the time countdown displayed in the upper left corner
GameCore.createText (3, "Time-Left");
GameCore.setTextColor (3, Color.WHITE);
GameCore.setTextFontSize (3, 20);
GameCore.setTextPosition (3, 25, 5);
GameCore.createText (4, "60");
GameCore.setTextPosition (4,60, 25);
GameCore.setTextColor (4, Color.WHITE);
GameCore.setTextFontSize (4, 28);
// Set the time to start the game countdown
long timeBegin = System.currentTimeMillis ();
// Set the gold coin to be alive before eating it. Another method to initialize the array boolean []
boolean [] coinIsDead = {false, false, false, false, false, false, false, false};
// Number of deaths of gold coin elves
int textNum = 0;
// Set the appearance of the gold coin sprite in the game according to the horizontal and vertical coordinates
for (int i = 0; i <coinNum.length; i ++) {
GameCore.createSprite (coinNum [i], "coin");
GameCore.setSpritePosition (coinNum [i], coinXDate [i], coinYDate [i]);
GameCore.playSpriteAnimate (coinNum [i], "rotate", true);
}
// Set the appearance of the bomb sprite in the game according to the horizontal and vertical coordinates
for (int i = 0; i <bombNum.length; i ++) {
GameCore.createSprite (bombNum [i], "bomb");
GameCore.playSpriteAnimate (bombNum [i], "laser", true);
GameCore.setSpritePosition (bombNum [i], bombXDate [i], bombYDate [i]);
}
// Create a new explosion sprite and wait for the trigger
int newBombNum = 12;
GameCore.createSprite (newBombNum, "bomb");
// Create text when winning or losing, wait for trigger
int newTextNum = 2;
// Get infinite keyboard information in an infinite loop, change the position of female elf
for (;;) {
int codeNum = GameCore.getPressedKeyCode ();
Point position = GameCore.getSpritePosition (spriteGirl);
// If you press the up or W key to move up and set the upper boundary to 135
if (codeNum == KeyEvent.VK_UP || codeNum == KeyEvent.VK_W) {
if (position.y> 135) {
GameCore.setSpritePosition (spriteGirl, position.x, --position.y);
GameCore.pause (1);
}
}
// If you press the down or S key to move down and set the lower boundary to 190
if (codeNum == KeyEvent.VK_DOWN || codeNum == KeyEvent.VK_S) {
if (position.y <190) {
GameCore.setSpritePosition (spriteGirl, position.x, ++ position.y);
GameCore.pause (1);
}
}
// If you press the left or A key to move to the left and set the left border to 0
if (codeNum == KeyEvent.VK_LEFT || codeNum == KeyEvent.VK_A) {
if (position.x> 0) {
GameCore.setSpriteFlipX (spriteGirl, true);
GameCore.setSpritePosition (spriteGirl, --position.x, position.y);
GameCore.pause (2);
}
}
// If you press the right or D key to move to the right and set the right border to 730
if (codeNum == KeyEvent.VK_RIGHT || codeNum == KeyEvent.VK_D) {
if (position.x <730) {
GameCore.setSpriteFlipX (spriteGirl, false);
GameCore.setSpritePosition (spriteGirl, ++ position.x, position.y);
GameCore.pause (1);
}
}
// Get the current female elf position
Point pGirl = GameCore.getSpritePosition (spriteGirl);
// Judge the distance between the female elf and any gold coin, close enough to disappear, and set the gold coin is dead
for (int i = 0; i <coinNum.length; i ++) {
if (coinIsDead [i]) {
continue;
}
Point pCoin = GameCore.getSpritePosition (coinNum [i]);
double distance = Math.sqrt ((Math.pow ((pCoin.x-pGirl.x), 2) + Math.pow ((pCoin.y-pGirl.y), 2)));
if (distance <30) {
GameCore.hideSprite (coinNum [i]);
coinIsDead [i] = true;
textNum = 0; // This sentence has a great meaning, and it is cleared every time in this infinite loop, otherwise the number is infinitely crazy
for (int j = 0; j <coinNum.length; j ++) {
if (coinIsDead [j] == true) {// I wrote this as i, so as long as you eat one, it is 8, it should be j
textNum ++;
}
}
GameCore.setText (1, Integer.toString (textNum)); // This sentence is placed outside the loop, otherwise
}
if (textNum == 8) {
// output text
GameCore.createText (newTextNum, "You Win");
GameCore.setTextPosition (newTextNum, 300, 150);
GameCore.setTextColor (newTextNum, Color.RED);
GameCore.setTextFontSize (newTextNum, 88);
GameCore.pause (3000);
GameCore.exit ();
}
}
// Judge the distance between the female elf and any bomb, close enough to explode the bomb, the game fails
for (int i = 0; i <bombNum.length; i ++) {
Point pBomb = GameCore.getSpritePosition (bombNum [i]);
double distance = Math.sqrt ((Math.pow ((pBomb.x-pGirl.x), 2) + Math.pow ((pBomb.y-pGirl.y), 2)));
if (distance <20) {
// Hide the original bomb elf
GameCore.hideSprite (bombNum [i]);
// A new explosion sprite appears
GameCore.playSpriteAnimate (newBombNum, "fire", true);
// A new bomb appears at the position of the original bomb
GameCore.setSpritePosition (newBombNum, pBomb.x, pBomb.y);
GameCore.pause (3000);
// output text
GameCore.createText (newTextNum, "You Lose");
GameCore.setTextPosition (newTextNum, 300, 150);
GameCore.setTextColor (newTextNum, Color.RED);
GameCore.setTextFontSize (newTextNum, 88);
GameCore.pause (2500);
GameCore.exit ();
}
}
// Set the end time of the game countdown
long timeEnd = System.currentTimeMillis ();
int timeText = (int) (60- (timeEnd-timeBegin) / 1000);
GameCore.setText (4, Integer.toString (timeText));
if (timeText == 0) {
GameCore.alert ("The time to clear the game is over and it will end soon.");
GameCore.exit ();
}
}
}
}
(1) New bomb function, if the elf dies immediately after eating the bomb, the game ends;
(2) New game countdown function, countdown 60 seconds
(3) Added a game victory and failure function. After eating gold coins, you win, and you lose the bomb
Game package and materials:
https://pan.baidu.com/s/1jHI54Po