1 Star 0 Fork 32

Louis彭/asteroids-initial

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
Rocket.java 3.13 KB
Copy Edit Raw Blame History
Louis彭 authored 2021-05-07 16:46 . add files.
import greenfoot.*;
/**
* A rocket that can be controlled by the arrowkeys: up, left, right.
* The gun is fired by hitting the 'space' key. 'z' releases a proton wave.
*
* @author Poul Henriksen
* @author Michael Kölling
*
* @version 1.1
*/
public class Rocket extends SmoothMover
{
private static final int gunReloadTime = 5; // The minimum delay between firing the gun.
private int reloadDelayCount; // How long ago we fired the gun the last time.
private static final int protonReloadTime = 20;
private int protonDelayCount;
private GreenfootImage rocket = new GreenfootImage("rocket.png");
private GreenfootImage rocketWithThrust = new GreenfootImage("rocketWithThrust.png");
/**
* Initialise this rocket.
*/
public Rocket()
{
reloadDelayCount = 5;
protonDelayCount = 20;
setImage(rocket);
}
/**
* Do what a rocket's gotta do. (Which is: mostly flying about, and turning,
* accelerating and shooting when the right keys are pressed.)
*/
public void act()
{
checkKeys();
reloadDelayCount++;
protonDelayCount++;
move();
checkAsteroidCollision();
}
public void checkAsteroidCollision()
{
Asteroid asteroid = (Asteroid)getOneIntersectingObject(Asteroid.class);
if(asteroid !=null)
{
Explosion explosion = new Explosion();
Space space = (Space) getWorld();
space.addObject(explosion,getX(),getY());
space.removeObject(this);
int score=space.getCounter().getValue();
ScoreBoard board=new ScoreBoard(score);
space.addObject(board, space.getWidth()/2, space.getHeight()/2);
}
}
/**
* Check whether there are any key pressed and react to them.
*/
private void checkKeys()
{
if (Greenfoot.isKeyDown("space"))
{
fire();
}
if (Greenfoot.isKeyDown("z"))
{
fireproton();
}
if (Greenfoot.isKeyDown("left"))
{
turn(-5);
}
if (Greenfoot.isKeyDown("right"))
{
turn(5);
}
if (Greenfoot.isKeyDown("up"))
{
int rotation = getRotation();
addToVelocity(new Vector(rotation,1));
setImage(rocketWithThrust);
}
else{
setImage(rocket);
}
}
/**
* Fire a bullet if the gun is ready.
*/
private void fire()
{
if (reloadDelayCount >= gunReloadTime)
{
Bullet bullet = new Bullet (getVelocity(), getRotation());
getWorld().addObject (bullet, getX(), getY());
bullet.move ();
reloadDelayCount = 0;
}
}
private void fireproton()
{
if (protonDelayCount >= protonReloadTime)
{
ProtonWave wave = new ProtonWave ();
getWorld().addObject (wave, getX(), getY());
protonDelayCount = 0;
}
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/louis-peng/asteroids-initial.git
git@gitee.com:louis-peng/asteroids-initial.git
louis-peng
asteroids-initial
asteroids-initial
master

Search

D67c1975 1850385 1daf7b77 1850385