package star2;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.shape.*;
import javafx.animation.AnimationTimer;
import static javafx.application.Application.launch;
import javafx.scene.paint.Color;
import javafx.scene.input.MouseEvent;
import javafx.scene.control.Label;
public class pro extends Application {
int time,fire,left,right;
Rectangle gun;
int gx;
Rectangle[] missile=new Rectangle[1000];
int[] mx=new int[1000];
int[] my=new int[1000];
int[] mis=new int[1000];
int s,number;
Circle[] invader=new Circle[16];
int dx,dy;
int[] ix=new int[16];
int[] iy=new int[16];
int[] inv=new int[16];
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Group root = new Group();
Scene scene = new Scene(root, 700, 700);
for(s=1;s<16;s++){
ix[s]=7+s;
if(s>5)ix[s]=s+2;
if(s>10)ix[s]=s-3;
iy[s]=20;
if(s>5)iy[s]=19;
if(s>10)iy[s]=18;
}
dx=1;
dy=0;
for(s=1;s<16;s++){
inv[s]=100;
}
int p1,p2;
for(s=1;s<16;s++){
invader[s]=new Circle(10,Color.YELLOW);
p1=100+25*ix[s];
p2=600-25*iy[s];
invader[s].setLayoutX(p1);
invader[s].setLayoutY(p2);
root.getChildren().add(invader[s]);
}
number=0;
time=0;
gx=10;
for(s=1;s<1000;s++){
missile[s]=new Rectangle(10,10,Color.RED);
mx[s]=-10;
my[s]=-10;
missile[s].setLayoutX(100+25*mx[s]);
missile[s].setLayoutY(600-25*my[s]);
mis[s]=100;
}
gun=new Rectangle(50,50,Color.BLUE);
gun.setLayoutX(100+25*gx);
gun.setLayoutY(600);
Button btn = new Button();
btn.setText("hit");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
fire=100;
}
});
btn.setLayoutX(300);
btn.setLayoutY(650);
Button btn1 = new Button();
btn1.setText("<-");
btn1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
left=100;
}
});
btn1.setLayoutX(200);
btn1.setLayoutY(650);
Button btn2 = new Button();
btn2.setText("->");
btn2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
right=100;
}
});
btn2.setLayoutX(400);
btn2.setLayoutY(650);
root.getChildren().add(btn);
root.getChildren().add(btn1);
root.getChildren().add(btn2);
root.getChildren().add(gun);
for(s=1;s<1000;s++){
root.getChildren().add(missile[s]);
}
primaryStage.setTitle("侵略者");
primaryStage.setScene(scene);
primaryStage.show();
new AnimationTimer() {
@Override
public void handle(long now) {
time=time+1;
if(time>10){
time=0;
step sub2=new step();
sub2.dx=dx;
sub2.dy=dy;
sub2.inv=inv;
sub2.ix=ix;
sub2.iy=iy;
sub2.makedata();
dx=sub2.dx;
dy=sub2.dy;
inv=sub2.inv;
ix=sub2.ix;
iy=sub2.iy;
if(left>50){
gx=gx-1;
gun.setLayoutX(100+25*gx);
}
if(right>50){
gx=gx+1;
gun.setLayoutX(100+25*gx);
}
for(s=1;s<number+1;s++){
my[s]=my[s]+1;
missile[s].setLayoutY(600-25*my[s]);
}
if(fire>50){
number=number+1;
mx[number]=gx;
my[number]=0;
missile[number].setLayoutY(600-25*my[number]);
missile[number].setLayoutX(100+25*mx[number]);
}
bomb sub5=new bomb();
sub5.mx=mx;
sub5.my=my;
sub5.missile=mis;
sub5.inv=inv;
sub5.ix=ix;
sub5.iy=iy;
sub5.number=number;
sub5.makedata();
mis=sub5.missile;
inv=sub5.inv;
int p1,p2;
for(s=1;s<16;s++){
p1=100+25*ix[s];
p2=600-25*iy[s];
if(inv[s]<50)p1=0;
if(inv[s]<50)p2=0;
invader[s].setLayoutX(p1);
invader[s].setLayoutY(p2);
}
time=0;
fire=0;
left=0;
right=0;
}
}
}.start();
}
}
package star2;
public class bomb {
int s,number;
int sx,h;
int[] ix=new int[16];
int[] iy=new int[16];
int[] inv=new int[16];
int dx,dy;
int[] mx=new int[1000];
int[] my=new int[1000];
int[] missile=new int[1000];
int count;
void makedata(){
for(s=1;s<number+1;s++){
for(sx=1;sx<16;sx++){
h=0;
if(mx[s]==ix[sx])h=h+1;
if(my[s]==iy[sx])h=h+1;
if(missile[s]>50)h=h+1;
if(inv[sx]>50)h=h+1;
if(h==4)missile[s]=0;
if(h==4)inv[sx]=0;
}
}
count=0;
for(sx=1;sx<16;sx++){
if(inv[sx]>50)count=count+1;
}
}
}
package star2;
public class step{
int s,t,time;
int[] ix=new int[16];
int[] iy=new int[16];
int[] inv=new int[16];
int dx,dy;
void makedata(){
for(s=1;s<16;s++){
ix[s]=ix[s]+dx;
iy[s]=iy[s]-dy;
}
change();
}
void change(){
int mode;
int s,h,maxp,minp;
mode=0;
maxp=0;
for(s=1;s<16;s++){
h=0;
if(ix[s]>maxp)h=h+1;
if(inv[s]>50)h=h+1;
if(h==2)maxp=ix[s];
}
minp=600;
for(s=1;s<16;s++){
h=0;
if(ix[s]<minp)h=h+1;
if(inv[s]>50)h=h+1;
if(h==2)minp=ix[s];
}
h=0;
if(maxp>19)h=h+1;
if(dy==0)h=h+1;
if(h==2)mode=1;
h=0;
if(maxp>19)h=h+1;
if(dy==1)h=h+1;
if(h==2)mode=2;
h=0;
if(minp<2)h=h+1;
if(dy==0)h=h+1;
if(h==2)mode=3;
h=0;
if(minp<2)h=h+1;
if(dy==1)h=h+1;
if(h==2)mode=4;
if(mode==1)dx=0;
if(mode==1)dy=1;
if(mode==2)dx=-1;
if(mode==2)dy=0;
if(mode==3)dx=0;
if(mode==3)dy=1;
if(mode==4)dx=1;
if(mode==4)dy=0;
}
}
最終更新:2014年04月25日 19:45