分享
 
 
 

applet射击小游戏开源

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

首先请准备好图像素材,例如把以下图像分别命名为bird.gif shark.gif 和weed.gif放到源文件同一目录下,

bird.gif shark.gif weed.gif

大家也可以自己随便指定图像,看代码就知道了

空格开始或暂停 方向键控制方向 f和g为开火两种不同的子弹 z和x为增加横向和纵向的移动速度 player的子弹可以抵消敌人的子弹 更多内容请自己添加修改

start:

Watergame.java

//小李开源之javagame by difeijin 2004 10 8

//如有疑问请联系我

//一个横版射击游戏,需要素材为bird.gif, shark.gif, weed.gif

//bird.gif 为player的图案 shark.gif为enemy的图案 weed为背景草的图案 游戏可以很方便的扩充

//例如添加敌人增强火力增加吃奖励提升战斗能力等

import java.awt.*;

import java.applet.Applet;

import java.awt.*;

import java.applet.*;

import java.lang.*;

import java.util.*;

import java.net.*;

// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //

class shark_fire implements Runnable //同一高度有三颗子弹

{

int startx;

int starty;

int xoffset;

int firespeed;

int firesize;

int rot;

int countofexplode;

Thread myThread;

static int count = 0;

boolean state, explode;

public shark_fire()

{

state = false;

count++;

countofexplode = 0;

xoffset = 0;

myThread = null;

}

public shark_fire(int x, int y, int z, int size)

{

count++;

startx = x;

starty = y;

firespeed = z;

firesize = size;

myThread = null;

explode = false;

state = true;

countofexplode = 0;

xoffset = 0;

this.start();

}

public void set(int x, int y, int z, int size)

{ //count++;

startx = x;

starty = y;

firespeed = z;

firesize = size;

explode = false;

state = true;

countofexplode = 0;

xoffset = 0;

// myThread=null;

this.start();

}

public void setexplode()

{ //count++;

explode = true;

countofexplode = 8;

//System.out.println("explode is true now ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");

//this.paint

}

public void start()

{ //state=true;

if (myThread == null)

{

System.out.println("sharkfire_shot Starting!");

myThread = new Thread(this);

myThread.start();

}

else

{

myThread.stop();

myThread = new Thread(this);

myThread.start();

}

}

public void stop()

{

state = false;

if (myThread != null)

{

myThread.stop();

myThread = null;

System.out.println(" sharkfire_shot thread stopped ");

}

}

public void destroy()

{

System.gc();

}

public void run()

{

//Do stuff

//System.out.println("run");

myThread.setPriority(Thread.MIN_PRIORITY);

while (myThread != null)

{

try

{

Thread.sleep(100);

}

catch(InterruptedException e)

{

}

// repaint();

if (starty < 0) //from buttom to top

{

System.out.println("sharkfire_shot stop" + starty + "cont is " + count);

myThread.stop();

}

}

myThread = null;

}

public void move() //tells shotH to move all the shots

{

starty -= firespeed;

xoffset += firespeed; //the fire will be move to the position with x cordinate startx startx+xoffset and startx-xoffset

//shark_fire

// System.out.println("moving ");

}

public void exploding(Graphics g) //tells shotH to move all the shots

{ //starty+=firespeed;

System.out.println(" sharkfire_shot exploding ");

g.fillOval(startx, starty, (int)((firesize + (10 - countofexplode) * 3) * Math.random()),

(int)((firesize + (10 - countofexplode) * 3) * Math.random()));

g.fillRoundRect(startx, starty, (10 - countofexplode) * 3, (10 - countofexplode) * 3,

(int)((firesize + (10 - countofexplode) * 3) * Math.random()),

(int)((firesize + (10 - countofexplode) * 3) * Math.random()));

g.fillOval(startx - xoffset, starty, (int)((firesize + (10 - countofexplode) * 3) * Math.random()),

(int)((firesize + (10 - countofexplode) * 3) * Math.random()));

g.fillRoundRect(startx + xoffset, starty, (10 - countofexplode) * 3, (10 - countofexplode) * 3,

(int)((firesize + (10 - countofexplode) * 3) * Math.random()),

(int)((firesize + (10 - countofexplode) * 3) * Math.random()));

g.fillOval(startx - xoffset, starty, (int)((firesize + (10 - countofexplode) * 3) * Math.random()),

(int)((firesize + (10 - countofexplode) * 3) * Math.random()));

g.fillRoundRect(startx + xoffset, starty, (10 - countofexplode) * 3, (10 - countofexplode) * 3,

(int)((firesize + (10 - countofexplode) * 3) * Math.random()),

(int)((firesize + (10 - countofexplode) * 3) * Math.random()));

Color temp = g.getColor();

switch (countofexplode % 8)

{

case 0:

case 1:

case 2:

g.setColor(new Color(255, 255, 206));

break;

case 3:

g.setColor(new Color(49, 48, 49));

break;

case 4:

case 5:

g.setColor(new Color(255, 251, 247));

break;

case 6:

g.setColor(new Color(255, 69, 255));

break;

case 7:

//case 8:

//default:g.setColor(new Color(255,243,231));

break;

}

if (countofexplode % 3 == 0)

{

g.fillOval(startx, starty, (int)((firesize + (10 - countofexplode) * 300) * Math.random()),

(int)(2 * (firesize) * Math.random()));

}

else

{

g.setColor(new Color(66, 65, 66));

for(int k = 0; k <= 12; k += 3)

{

g.drawOval(startx - xoffset + k * 20, starty, 10 * k, 16 - k);

g.drawRect(startx - xoffset + k * 20 - 10, starty + 5, 5 * k, 16 - k);

}

}

g.setColor(temp);

// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //

}

public boolean checkexplode(Graphics g)

{

if (explode)

{

exploding(g);

countofexplode--;

if (countofexplode == 0)

{

stop();

return true;

}

}

return false;

}

public void check() //tells shotH to check the shots' movement

{

if (starty < 0)

{

stop();

}

}

public void paint(Graphics g)

{ //this is the shots paint method... draws a line from its last position to its current position, basically

rot++; //advances color rotation

if (rot == 16)

{

rot = 0;

} //keeps rotation below 17

Color col1 = new Color(255 - (rot * 8), rot * 8, 127 + rot * 8); //makes the new color

if (rot % 2 == 0)

{

g.setColor(col1); //sets the current color to the rotation color

}

g.fillOval((int)startx, (int)starty, firesize, firesize); //draws a line from the current coords to the previous coords

g.fillOval((int)startx - xoffset, (int)starty, firesize, firesize); //draws a line from the current coords to the previous coords

g.fillOval((int)startx + xoffset, (int)starty, firesize, firesize); //draws a line from the current coords to the previous coords

}

//}

};

// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //

class fire implements Runnable

{

int startx;

int starty;

int firespeed;

int firesize;

int rot;

int countofexplode;

int type;

Thread myThread;

static int count = 0;

boolean state, explode, sharkfirehitted;

public fire()

{

state = false;

count++;

countofexplode = 0;

type = 0;

myThread = null;

}

public fire(int x, int y, int speed, int size)

{

count++;

startx = x;

starty = y;

firespeed = speed;

firesize = size;

myThread = null;

explode = false;

sharkfirehitted = false;

state = true;

countofexplode = 0;

type = 0;

this.start();

}

public fire(int x, int y, int speed, int size, int atype)

{

set(x, y, speed, size, atype);

}

public void set(int x, int y, int speed, int size, int atype)

{

startx = x;

starty = y;

firespeed = speed;

firesize = size;

explode = false;

sharkfirehitted = false;

state = true;

countofexplode = 0;

type = atype;

this.start();

}

public void set(int x, int y, int speed, int size)

{ //count++;

startx = x;

starty = y;

firespeed = speed;

firesize = size;

explode = false;

sharkfirehitted = false;

state = true;

countofexplode = 0;

type = 0;

// myThread=null;

this.start();

}

public void setexplode()

{ //count++;

explode = true;

countofexplode = 8;

//System.out.println("explode is true now ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");

//this.paint

}

public void setsharkfirehitted()

{ //count++;

sharkfirehitted = true;

countofexplode = 4;

//System.out.println("explode is true now ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");

//this.paint

}

public void start()

{ //state=true;

if (myThread == null)

{

System.out.println("Starting!");

myThread = new Thread(this);

myThread.start();

}

else

{

myThread.stop();

myThread = new Thread(this);

myThread.start();

}

}

public void stop()

{

state = false;

if (myThread != null)

{

myThread.stop();

myThread = null;

System.out.println("thread stopped ");

}

}

public void destroy()

{

System.gc();

}

public void run()

{

//Do stuff

//System.out.println("run");

myThread.setPriority(Thread.MIN_PRIORITY);

while (myThread != null)

{

try

{

Thread.sleep(100);

}

catch(InterruptedException e)

{

}

// repaint();

if (starty > 200)

{

System.out.println("stop" + starty + "cont is " + count);

myThread.stop();

}

}

myThread = null;

}

public void move() //tells shotH to move all the shots

{

starty += firespeed;

// System.out.println("moving ");

}

public void exploding(Graphics g) //tells shotH to move all the shots

{ //starty+=firespeed;

System.out.println("exploding ");

//g.fillOval((int)startx, (int)starty, firesize, firesize); //draws a line from the current coords to the previous coords

// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //

System.out.println(" " + (int)(Math.random() * 250) + " " + (int)(Math.random() * 250) + " " +

(int)(Math.random() * 250));

g.setColor(new Color((int)(Math.random() * 250), (int)(Math.random() * 250), (int)(Math.random() * 250)));

int MaxRocketNumber = 60;

int arr[] = { -1, 0, 1, 2, -2, -3, -4, 3, 4, 5, -5, 6, -6, 7, -7, 8, -8, 9, -9 };

g.drawOval(startx, starty, firesize + (10 - countofexplode) * 3, firesize + (10 - countofexplode) * 3);

g.fillOval(startx, starty, (int)((firesize + (10 - countofexplode) * 3) * Math.random()),

(int)((firesize + (10 - countofexplode) * 3) * Math.random()));

g.fillRoundRect(startx, starty, (10 - countofexplode) * 3, (10 - countofexplode) * 3,

(int)((firesize + (10 - countofexplode) * 3) * Math.random()),

(int)((firesize + (10 - countofexplode) * 3) * Math.random()));

}

public void dispsharkfirehitted(Graphics g)

{

g.drawOval(startx, starty, firesize * 6 - countofexplode * 3, firesize * 6 - countofexplode * 6);

}

public boolean checkexplode(Graphics g)

{

if (explode)

{

exploding(g);

countofexplode--;

if (countofexplode == 0)

{

stop();

return true;

}

}

return false;

}

public boolean checksharkfirehitted(Graphics g)

{

if (sharkfirehitted)

{

dispsharkfirehitted(g);

countofexplode--;

if (countofexplode == 0)

{

stop();

return true;

}

}

return false;

}

public void check(int width, int height) //tells shotH to check the shots' movement

{

if (starty > height)

{

stop();

}

}

public void paint(Graphics g)

{ //this is the shots paint method... draws a line from its last position to its current position, basically

switch (type)

{

case 0:

rot++; //advances color rotation

if (rot == 15)

{

rot = 0;

} //keeps rotation below 15

Color col1 = new Color(255 - (rot * 15), rot * 10, 127 + rot * 8); //makes the new color

g.setColor(col1); //sets the current color to the rotation color

g.fillOval((int)startx, (int)starty, firesize, firesize); //draws a line from the current coords to the previous coords

break;

case 1:

//g.setColor(new Color(255,255,156));

g.fillRect((int)startx, (int)starty, firesize / 3, firesize / 2); //draws a line from the current coords to the previous coords

g.setColor(new Color((int)(Math.random() * 250), (int)(Math.random() * 60), (int)(Math.random() * 156)));

g.draw3DRect((int)startx - firesize / 4, (int)starty, firesize / 2, firesize / 4, false);

g.setColor(new

Color((int)(Math.random() * 156), 200 - (int)(Math.random() * 160),

255 - (int)(Math.random() * 160)));

g.fillOval(startx - (int)(firesize / 3), starty + (int)(firesize / 3), (int)(firesize / 1.5),

firesize / 2);

g.drawLine(startx - firesize / 2, starty + firesize / 2, startx, starty + firesize);

g.drawLine(startx + firesize / 2, starty + firesize / 2, startx, starty + firesize);

break;

}

}

//}

};

public class Watergame extends java.applet.Applet implements Runnable

{

Thread killme = null;

ImageCanvas board;

public void init()

{

// setLayout() is a java.awt.Container member. It sets the LayoutManager

// for the container. Without it, the ImagePanels would get different

// relative positions when the viewer is resized.

setLayout(new BorderLayout());

// Place the ImageHelp at the top of the applet.

ImageHelp imHelp = new ImageHelp();

add("North", imHelp);

// Place the ImagePanel at the center of the applet.

ImagePanel ip = new ImagePanel(this, imHelp.getLabel());

add("Center", ip);

board = ip.getBoard();

System.out.println("initial finish ");

}

public void run()

{

while (killme != null)

{

try

{

Thread.sleep(100);

}

catch(InterruptedException e)

{

}

board.tick();

}

killme = null;

}

public void start()

{

if (killme == null)

{

killme = new Thread(this);

killme.start();

}

}

public void stop()

{

killme = null;

}

}

class ImageHelp extends Panel

{

Label l;

public ImageHelp()

{

setLayout(new GridLayout(2, 1));

// Create a new label, centered in the panel

add(new Label("Move the player using the arrow keys and fire with f and g,and speed up using x and z ", Label.CENTER));

l = new Label("Score: ");

add(l);

System.out.println("imagehelp finished ");

}

public Label getLabel()

{

return l;

}

}

class ImagePanel extends Panel

{

ImageCanvas board;

public ImagePanel(Applet app, Label l)

{

// Set the layout so that it is one column full size of the panel

//

setLayout(new GridLayout(0, 1));

board = new ImageCanvas(app, l);

add(board);

System.out.println("imagepanel initial finished ");

}

public ImageCanvas getBoard()

{

return board;

}

}

class ImageCanvas extends Canvas /*implements ImageObserver */

{

int banks[][] = new int[2][12];

int xpos = 50, ypos = 50;

int yOff = 0;

int ySpeed = 1;

int ymoveoffset = 5; //player's move offset

int xmoveoffset = 5;

fire fireshot[] = new fire[20]; //player's shoot

shark_fire sharkfire_shot[] = new shark_fire[20]; //shark's shoot

Image im;

Graphics gOff;

Image image_bird;

Image image_shark;

int xshark[] = new int[6];

int yshark[] = new int[6];

int xSpeedshark[] = new int[6];

int nShoreTick = 0;

int nScore = 0;

Label labelScore;

boolean fPaused = true;

boolean fDead = false;

Image image_weed;

Dimension r;

int xweed[] = new int[4];

int yweed[] = new int[4];

public ImageCanvas(Applet app, Label l)

{

labelScore = l;

image_bird = app.getImage(app.getCodeBase(), "bird.gif");

image_shark = app.getImage(app.getCodeBase(), "shark.gif");

image_weed = app.getImage(app.getCodeBase(), "weed.gif");

r = app.getSize();

initBoard();

try

{ //layout();

System.out.println(r);

im = app.createImage(r.width, r.height);

System.out.println(im);

gOff = im.getGraphics();

}

catch(Exception e)

{

e.printStackTrace();

}

System.out.println(" finish image canvas creat ");

}

void initBoard()

{

// Initialize the banks

for(int i = 0; i < 12; i++)

{

for(int j = 0; j < 2; j++)

{

banks[j][i] = (int)(Math.random() * 30);

}

}

// Initialize the weed

for(int i = 0; i < 4; i++)

xweed[i] = -999;

// Initialize the sharks

for(int i = 0; i < 6; i++)

xshark[i] = -999;

xpos = 100;

ypos = 50;

yOff = 0;

ymoveoffset = 5;

xmoveoffset = 5;

ySpeed = 1;

nShoreTick = 0;

nScore = 0;

fDead = false;

}

public void layout()

{

}

public void update(Graphics g)

{

paint(g);

}

public void paint(Graphics g)

{

Rectangle r = bounds(); //

paintApplet(gOff);

g.drawImage(im, 0, 0, this);

// System.out.println("paint "); //error

}

public void paintApplet(Graphics g)

{ //System.out.println(" start to paint applet" );

Rectangle r = bounds();

g.setColor(Color.lightGray);

g.clearRect(0, 0, r.width, r.height);

// Draw the banks

Polygon p1 = new Polygon();

p1.addPoint(0, 0);

Polygon p2 = new Polygon();

p2.addPoint(r.width, 0);

for(int i = 0; i < 12; i++)

{

p1.addPoint(banks[0][i], i * r.height / 10 - yOff);

p2.addPoint(r.width - banks[1][i], i * r.height / 10 - yOff);

}

p1.addPoint(0, r.height);

p1.addPoint(0, 0);

p2.addPoint(r.width, r.height);

p2.addPoint(r.width, 0);

g.setColor(Color.yellow);

g.fillPolygon(p1);

g.fillPolygon(p2);

// Draw the weed

for(int i = 0; i < 4; i++)

if (xweed[i] != -999)

{

// System.out.println("Drawing a weed");

g.drawImage(image_weed, xweed[i], yweed[i], this);

}

// Draw the sharks

for(int i = 0; i < 6; i++)

if (xshark[i] != -999)

g.drawImage(image_shark, xshark[i], yshark[i], this);

// Draw the player

g.drawImage(image_bird, xpos, ypos, this);

for(int i = 0; i < 20; i++)

{

if (fireshot[i] != null && fireshot[i].state)

{

if (!fireshot[i].checkexplode(g) && !fireshot[i].checksharkfirehitted(g)); // if not explode and if not hit the fire of shark

fireshot[i].paint(g);

//fireshot[i].check(100,200);

}

}

for(int i = 0; i < 20; i++)

{

if (sharkfire_shot[i] != null && sharkfire_shot[i].state)

{

if (!sharkfire_shot[i].checkexplode(g)); // if not explode

sharkfire_shot[i].paint(g);

//fireshot[i].check(100,200);

}

}

// Display any status messages

g.setColor(Color.gray);

if (fDead)

g.drawString("haha ^_^ ,you are hitted ,Press space bar for new game", 50, 50);

else if (fPaused)

g.drawString("Press space bar to tube", 50, 50);

}

int leftbank(int y)

{

Rectangle r = bounds();

int segment = (y + yOff) * 10 / r.height;

return Math.max(banks[0][segment], banks[0][segment + 1]);

}

int rightbank(int y)

{

Rectangle r = bounds();

int segment = (y + yOff) * 10 / r.height;

return r.width - Math.min(banks[1][segment], banks[1][segment + 1]);

}

public synchronized boolean handleEvent(Event e)

{

switch (e.id)

{

case Event.KEY_ACTION:

case Event.KEY_PRESS:

switch (e.key)

{

case Event.UP:

case 'k':

if (ypos - ymoveoffset > 0 && !fPaused)

ypos -= ymoveoffset;

repaint();

return true;

case Event.DOWN:

case 'j':

if (ypos + ymoveoffset < bounds().height - 32 && !fPaused)

// {//if (ySpeed>5)

// {

// }

ypos += ySpeed + ymoveoffset;

repaint();

return true;

case Event.RIGHT:

case 'l':

if (xpos + xmoveoffset < rightbank(ypos) - 32 && !fPaused)

xpos += xmoveoffset;

repaint();

return true;

case Event.LEFT:

case 'h':

if (xpos - xmoveoffset > leftbank(ypos) && !fPaused)

xpos -= xmoveoffset;

repaint();

return true;

case 'f':

startafire(xpos, ypos, 20, 10, 0); //fire type 0 with speed of 20

//System.out.println("fire ");

//fire a=new fire(20,20,30);

break;

case 'g':

startafire(xpos, ypos, 35, 20, 1); //fire type 1 with speed of 35

break;

//repaint();

//return true;

case 'z': //accecerate the player's x speed

// if (ySpeed > 0)

// ySpeed--;

xmoveoffset++;

return true;

case 'x': //accecerate the player's y speed

// if (ySpeed < 10)

// ySpeed++;

ymoveoffset++;

return true;

case ' ': //it is the blank press

if (fDead)

{

initBoard();

fPaused = false;

labelScore.setText("Score: " + String.valueOf(nScore));

}

else

fPaused = !fPaused;

return true;

default:

return false;

}

default:

return false;

}

}

// tick() is because I couldn't figure out if I made this class Runnable what

// whould I do about start()&stop()

public void tick()

{

if (fPaused)

return;

// Scroll the shore

yOff += ySpeed;

// Scroll the player

if (ypos - ySpeed > 0)

{

ypos -= ySpeed;

}

if (xpos < leftbank(ypos))

xpos = leftbank(ypos);

else if (xpos > rightbank(ypos) - 32)

xpos = rightbank(ypos) - 32;

// Scroll the weed

for(int i = 0; i < 4; i++)

if (xweed[i] != -999)

{

yweed[i] -= ySpeed;

if (yweed[i] < 0)

{

// System.out.println("Killing a cactus");

xweed[i] = -999;

}

}

// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% below start to check collision//

Rectangle rectPlayer = new Rectangle(xpos + 4, ypos + 4, 32 - 4, 32 - 4);

Rectangle rectShark = new Rectangle();

Rectangle rectshot = new Rectangle();

Rectangle rectsharkshot1 = new Rectangle();

Rectangle rectsharkshot2 = new Rectangle();

Rectangle rectsharkshot3 = new Rectangle();

// Scroll the sharks

for(int i = 0; i < 6; i++)

{

yshark[i] -= Math.random() * ySpeed;

if (xshark[i] != -999 && (yshark[i] < 0 || xshark[i] < leftbank(yshark[i])))

{

// Shark is off-screen. Destroy.

// System.out.println("Destroyed a shark");

xshark[i] = -999;

}

if (xshark[i] != -999)

{

xshark[i] -= xSpeedshark[i] * ySpeed;

// check if the shark hit the player?

rectShark.reshape(xshark[i] + 8, yshark[i] + 8, 32 - 8, 32 - 8);

if (rectPlayer.intersects(rectShark))

{

fDead = true;

fPaused = true;

}

}

//check if fire shot hit the shark

for(int j = 0; j < 20; j++)

{

if (fireshot[j] != null && fireshot[j].state)

{

rectshot.reshape(fireshot[j].startx - fireshot[j].firesize / 2,

fireshot[j].starty - fireshot[j].firesize / 2, fireshot[j].firesize,

fireshot[j].firesize);

if (rectshot.intersects(rectShark))

{

xshark[i] = -999; //// Shark Destroy.

// fireshot[j].explode();

nScore += 200; //score added as you hit the shark

fireshot[j].setexplode();

}

}

}

}

//check if fire shot of shark hit the player

for(int j = 0; j < 20; j++)

{

if (sharkfire_shot[j] != null && sharkfire_shot[j].state)

{

rectsharkshot1.reshape(sharkfire_shot[j].startx - sharkfire_shot[j].firesize / 2,

sharkfire_shot[j].starty - sharkfire_shot[j].firesize / 2,

sharkfire_shot[j].firesize, sharkfire_shot[j].firesize);

rectsharkshot2.reshape(sharkfire_shot[j].startx - sharkfire_shot[j].firesize / 2 -

sharkfire_shot[j].xoffset,

sharkfire_shot[j].starty - sharkfire_shot[j].firesize / 2,

sharkfire_shot[j].firesize, sharkfire_shot[j].firesize);

rectsharkshot3.reshape(sharkfire_shot[j].startx - sharkfire_shot[j].firesize / 2 +

sharkfire_shot[j].xoffset,

sharkfire_shot[j].starty - sharkfire_shot[j].firesize / 2,

sharkfire_shot[j].firesize, sharkfire_shot[j].firesize);

if (rectsharkshot1.intersects(rectPlayer) || rectsharkshot2.intersects(rectPlayer) ||

rectsharkshot3.intersects(rectPlayer))

{

sharkfire_shot[j].setexplode();

fDead = true;

fPaused = true; //player is hitted

}

for(int k = 0; k < 20; k++)

{

if (fireshot[k] != null && fireshot[k].state)

{

rectshot.reshape(fireshot[k].startx - fireshot[k].firesize / 2,

fireshot[k].starty - fireshot[k].firesize / 2, fireshot[k].firesize,

fireshot[k].firesize);

////check shark fire shot if hit the player fire shot

if (rectsharkshot1.intersects(rectshot) || rectsharkshot2.intersects(rectshot) ||

rectsharkshot3.intersects(rectshot))

{

fireshot[k].setsharkfirehitted(); //fire of player hit with fire of shark

sharkfire_shot[j].stop();

nScore += 30;

}

}

}

}

}

// Update score, if on the bottom half of screen

Rectangle r = bounds();

if (ypos + yOff > r.height / 2)

{

nScore += ySpeed;

labelScore.setText("Score: " + String.valueOf(nScore));

}

// Do we need to generate another shore coordinate?

if (yOff >= r.height / 10)

{

yOff -= r.height / 10;

for(int i = 1; i < 12; i++)

{

banks[0][i - 1] = banks[0][i];

banks[1][i - 1] = banks[1][i];

}

// banks[0][11] = banks[0][10] + 10;

// banks[1][11] = banks[0][10] + 10;

banks[0][11] = banks[0][10] + (int)(Math.random() * 20) - 7;

banks[1][11] = banks[1][10] + (int)(Math.random() * 20) - 7;

if (banks[0][11] < 0)

banks[0][11] = 0;

if (r.width - banks[1][11] < 100)

banks[1][11] -= 64;

if (banks[0][11] >= r.width)

banks[0][11] = r.width - 1;

if (banks[1][11] >= r.width)

banks[1][11] = r.width - 1;

if (banks[0][11] > banks[1][11])

{

int i = banks[0][11];

banks[0][11] = banks[1][11];

banks[1][11] = i;

}

if (banks[0][11] + 64 > r.width - banks[1][11])

{

banks[0][11] = r.width - banks[1][11] - 40;

banks[1][11] -= 22;

}

// If necessary, generate a new shark

for(int i = 0; i < 6; i++)

if (xshark[i] == -999 && Math.random() < 0.2)

{

xshark[i] = r.width - banks[1][11] - 32;

yshark[i] = 9 * r.height / 10;

xSpeedshark[i] = (int)(Math.random() * 3) + 1;

// System.out.println("Created a shark");

break;

}

// start a shark fire;

int ran = (int)(Math.random() * 6);

startasharkfire(xshark[ran], yshark[ran], 5, 10); //start shark fire with speed 5 and size 10

nShoreTick++;

if (nShoreTick > 3)

{

// System.out.println("Finished level " + String.valueOf(ySpeed));

nShoreTick = 0;

banks[0][11] = 0;

banks[1][11] = 0;

if (ySpeed < 10)

ySpeed++;

}

}

// Add any needed weed

for(int i = 0; i < 4; i++)

if (xweed[i] == -999 && Math.random() < .02)

{

// System.out.println("Making a weed");

yweed[i] = r.height;

if (Math.random() < 0.5)

xweed[i] = (int)(Math.random() * banks[0][11]);

else

xweed[i] = r.width - (int)(Math.random() * banks[1][11]);

}

for(int i = 0; i < 20; i++)

{

if (fireshot[i] != null && fireshot[i].state)

{

fireshot[i].move();

fireshot[i].check(100, 500);

}

}

for(int i = 0; i < 20; i++)

{

if (sharkfire_shot[i] != null && sharkfire_shot[i].state)

{

sharkfire_shot[i].move();

sharkfire_shot[i].check();

}

}

repaint();

}

public void startafire(int x, int y, int speed, int size, int type)

{ //System.out.println("start to find fire ");

for(int i = 0; i < 20; i++)

{

if (fireshot[i] == null)

{

fireshot[i] = new fire(x, y, speed, size, type);

System.out.println(" creat new " + i);

return;

}

else if (fireshot[i].state == false)

{

fireshot[i].set(x, y, speed, size, type);

System.out.println(" state false reset " + i);

return;

}

//System.out.println(fireshot[i].state + " " + i);

// System.out.println(fireshot[i].state+" "+fireshot[i].myThread+" "+i);

}

}

public void startasharkfire(int x, int y, int z, int size)

{ //System.out.println("start to find fire ");

for(int i = 0; i < 20; i++)

{

if (sharkfire_shot[i] == null)

{

sharkfire_shot[i] = new shark_fire(x, y, z, size);

System.out.println("shark fire creat new " + i);

return;

}

else if (sharkfire_shot[i].state == false)

{

sharkfire_shot[i].set(x, y, z, size);

System.out.println("shark fire state false reset " + i);

return;

}

//System.out.println(sharkfire_shot[i].state + " " + i);

// System.out.println(fireshot[i].state+" "+fireshot[i].myThread+" "+i);

}

}

}

/*

<applet code=Watergame.class width=500 height=500>

</applet>

*/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有