import java.awt.*;
import java.awt.event.*;
class game0907 extends Frame implements Runnable{
int m,n,m1,n1;
int face[][]=
new int
[101][101];
int chface[][]=new int[101][101];
int chrleg[][]=new int[101][101];
int chlleg[][]=new int[101][101];
int body[][]=new int[101][101];
int rarm[][]=new int[101][101];
int larm[][]=new int[101][101];
int rleg[][]=new int[101][101];
int lleg[][]=new int[101][101];
int px,py,naga;
int j;
double kakudo,kakudox;
public static void main(String[] args) {
game0907 f = new game0907();
f.setSize(700,700);
f.setBackground(Color.blue) ;
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){public void
windowClosing(WindowEvent e){System.exit(0);}});
}
game0907(){
robot();
kakudo=30;
px=35;
py=80;
naga=-10;
seekchmodel(kakudo,px,py,naga,lleg,chlleg);
kakudo=30;
px=65;
py=80;
naga=-10;
seekchmodel(kakudo,px,py,naga,rleg,chrleg);
Thread th=new Thread(this);
th.start();
}
public void run(){
int t;
t=0;
kakudo=0;
while(t<
100){
kakudo=kakudo+5;
if(kakudo>30)kakudo=0;
px=50;
py=50;
naga=40;
seekchmodel(kakudo,px,py,naga,face,chface);
repaint();
try{ Thread.sleep(300); }
catch(InterruptedException e){}
t=t+1;
}
}
public void paint( Graphics g ) {
g.setColor(Color.blue);
g.fillRect(0,0,700,700);
g.setColor(Color.red);
for (m=0;m<100;m++){
for (n=0;n<100;n++){
if(chface[m][n]>50)g.fillRect(100+5*n,100+5*m,5,5);
}
}
for (m=0;m<100;m++){
for (n=0;n<100;n++){
if(body[m][n]>50)g.fillRect(100+5*n,100+5*m,5,5);
}
}
g.setColor(Color.red);
for (m=0;m<100;m++){
for (n=0;n<100;n++){
if(chrleg[m][n]>50)g.fillRect(100+5*n,100+5*m,5,5);
}
}
g.setColor(Color.red);
for (m=0;m<100;m++){
for (n=0;n<100;n++){
if(chlleg[m][n]>50)g.fillRect(100+5*n,100+5*m,5,5);
}
}
g.setColor(Color.red);
for (m=0;m<100;m++){
for (n=0;n<100;n++){
if(rarm[m][n]>50)g.fillRect(100+5*n,100+5*m,5,5);
}
}
g.setColor(Color.red);
for (m=0;m<100;m++){
for (n=0;n<100;n++){
if(larm[m][n]>50)g.fillRect(100+5*n,100+5*m,5,5);
}
}
}
public static double rotx(double kakudo,double x,double y){
double kaku;
double a1,a2,a3,a4;
double x1,y1;
kaku = kakudo*Math.PI/180;
a1=Math.cos(kaku);
a2=-Math.sin(kaku);
a3=Math.sin(kaku);
a4=Math.cos(kaku);
x1=a1*x+a2*y;
y1=a3*x+a4*y;
return x1;
}
public static double roty(double kakudo,double x,double y){
double kaku;
double a1,a2,a3,a4;
double x1,y1;
kaku = kakudo*Math.PI/180;
a1=Math.cos(kaku);
a2=-Math.sin(kaku);
a3=Math.sin(kaku);
a4=Math.cos(kaku);
x1=a1*x+a2*y;
y1=a3*x+a4*y;
return y1;
}
void robot(){
for(m=10;m<30;m++){
for(n=30;n<70;n++){
face[m][n]=100;
}
}
for(m=30;m<50;m++){
for(n=40;n<60;n++){
face[m][n]=100;
}
}
for(m=50;m<70;m++){
for(n=10;n<20;n++){
larm[m][n]=100;
}
}
for(m=50;m<70;m++){
for(n=80;n<90;n++){
rarm[m][n]=100;
}
}
for(m=50;m<80;m++){
for(n=20;n<80;n++){
body[m][n]=100;
}
}
for(m=80;m<90;m++){
for(n=30;n<40;n++){
lleg[m][n]=100;
}
}
for(m=80;m<90;m++){
for(n=60;n<70;n++){
rleg[m][n]=100;
}
}
}
public void seekchmodel(double kakudo,int px,int py,int naga,int[][] model,int[][] chmodel){
for (m=0;m<100;m++){
for (n=0;n<100;n++){
chmodel[m][n]=0;
}
}
for (m=0;m<100;m++){
for (n=0;n<100;n++){
kakudox=(py-m)*kakudo/naga;
if(kakudox>kakudo)kakudox=kakudo;
if(kakudox<0)kakudox=0;
n1=(int)rotx(kakudox,n-px,m-py)+px;
m1=(int)roty(kakudox,n-px,m-py)+py;
if(n1<0)n1=0;
if(m1<0)m1=0;
if(n1>99)n1=99;
if(m1>99)m1=99;
if (model[m][n]<50)chmodel[m1][n1]=30;
if (model[m][n]>50)chmodel[m1][n1]=100;
}
}
for (m=1;m<100;m++){
for (n=1;n<100;n++){
if(chmodel[m][n]==0)chmodel[m][n]=chmodel[m][n-1];
}
}
}
}
最終更新:2011年03月03日 00:20