1/31
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;
public class mini_pro extends Applet implements KeyListener, Runnable{
Font font = new Font("serif", Font.BOLD, 24);
Image background, textbox, attack, attack2;
Image hero[ ]=new Image[4];
Image object[ ]=new Image[4];
Image enemy1[ ]=new Image[3];
Image enemy2[ ] = new Image[3];
Image enemy3[ ] = new Image[3];
Image enemy4[ ] = new Image[3];
Image enemy5[ ] = new Image[3];
Image lifepics[ ] = new Image[3];
//背景を動かす変数
int back;
int objectback;
//キャラクターの位置を示す変数
int position=0;
//文章のための変数
String string="";
boolean shown=false;
boolean wait=false;
boolean attackshown=false;
boolean freeze = false;
int heropose=0;
int heroposition=0;
int life = 3;
boolean enemy1status = true;
int enemy1position = 30;
int enemy1pose=0;
boolean enemy2status = true;
int enemy2position = 40;
int enemy2pose=0;
boolean enemy3status = true;
int enemy3position = 50;
int enemy3pose=0;
boolean enemy4status = true;
int enemy4position = 60;
int enemy4pose=0;
boolean enemy5status = true;
int enemy5position = 65;
int enemy5pose=0;
Thread runner;
public void init() {
addKeyListener(this);
try {
MediaTracker mt = new MediaTracker( this );
int number=1;
background = getImage(getCodeBase(),"pictures/background.png");
mt.addImage( background, number++ );
for (int i=0; i<hero.length; i++){
hero[i] = getImage(getCodeBase(),
"pictures/chara"+i+".png");
mt.addImage( hero[ i ], number++ );
}
for (int i=0; i<hero.length; i++){
object[i] = getImage(getCodeBase(),
"pictures/object"+i+".png");
mt.addImage( object[ i ], number++ );
}
textbox = getImage(getCodeBase(), "pictures/textbox.png");
mt.addImage( textbox, number++ );
attack= getImage(getCodeBase(), "pictures/attack.png");
mt.addImage( attack, number++ );
attack2= getImage(getCodeBase(), "pictures/attack2.png");
mt.addImage( attack2, number++ );
for (int i=0; i<enemy1.length; i++){
enemy1[i] = getImage(getCodeBase(),
"pictures/bat"+(i+1)+".png");
mt.addImage( enemy1[ i ], number++ );
}
for (int i=0; i<enemy2.length; i++){
enemy2[i] = getImage(getCodeBase(),
"pictures/bat"+(i+1)+".png");
mt.addImage( enemy2[ i ], number++ );
}
for (int i=0; i<enemy3.length; i++){
enemy3[i] = getImage(getCodeBase(),
"pictures/bat"+(i+1)+".png");
mt.addImage( enemy3[ i ], number++ );
}
for (int i=0; i<enemy4.length; i++){
enemy4[i] = getImage(getCodeBase(),
"pictures/bat"+(i+1)+".png");
mt.addImage( enemy4[ i ], number++ );
}
for (int i=0; i<enemy5.length; i++){
enemy5[i] = getImage(getCodeBase(),
"pictures/bat"+(i+1)+".png");
mt.addImage( enemy5[ i ], number++ );
}
for (int i=0; i<lifepics.length; i++){
lifepics[i] = getImage(getCodeBase(),
"pictures/life"+(i+1)+".png");
mt.addImage( lifepics[ i ], number++ );
}
mt.waitForAll( );
} catch( Exception ex ) { ex.printStackTrace( ); }
runner = new Thread(this);
runner.start();
}
public void paint (Graphics g) {
g.setColor(Color.white);
g.setFont(font);
setSize(640, 480);
g.drawImage(background, 0-back,0, this);
g.drawImage(background, 640-back, 0, this);
g.drawImage(background, -640-back, 0, this);
g.drawImage(object[0], 640-objectback, 320, this);
g.drawImage(object[1], 1920-objectback, 0, this);
g.drawImage(hero[heropose], 128+heroposition, 320, this);
if(life==0){
string = "Game Over...";
shown=true;
freeze=true;
}
if(life==1){
g.drawImage(lifepics[0],0,0,this);
}
if(life==2){
g.drawImage(lifepics[1],0,0,this);
}
if(life==3){
g.drawImage(lifepics[2],0,0,this);
}
if ( shown == true) {
g.drawImage(textbox, 0,0, this);
g.drawString(" "+string,40,40);
}
if(enemy1status==true){
g.drawImage(enemy1[enemy1pose],-128+enemy1position*32, 320, this);
}
if(enemy2status==true){
g.drawImage(enemy2[enemy2pose],-128+enemy2position*32, 320, this);
}
if(enemy3status==true){
g.drawImage(enemy3[enemy3pose],-128+enemy3position*32, 320, this);
}
if(enemy4status==true){
g.drawImage(enemy4[enemy4pose],-128+enemy4position*32, 320, this);
}
if(enemy5status==true){
g.drawImage(enemy5[enemy5pose],-128+enemy5position*32, 320, this);
}
if(attackshown == true){
if(heropose==0 || heropose==1){
g.drawImage(attack, 128+96+heroposition, 320, this);
}
if(heropose==2 || heropose==3){
g.drawImage(attack2, 128-96+heroposition, 320, this);
}
}
}
public void run(){
if(enemy1status==true){
try { while(runner == Thread.currentThread()){
enemy1position-=1;
if(enemy1pose == 0){
enemy1pose =1;
}else{enemy1pose=0;}
if(Math.abs(enemy1position - position)>=0 && Math.abs(enemy1position - position)<=4 ){
life-=1;
}
enemy2position-=1;
if(enemy2pose == 0){
enemy2pose =1;
}else{enemy2pose=0;}
if(Math.abs(enemy2position - position)>=0 && Math.abs(enemy2position - position)<=4 ){
life-=1;
}
enemy3position-=1;
if(enemy3pose == 0){
enemy3pose =1;
}else{enemy3pose=0;}
if(Math.abs(enemy3position - position)>=0 && Math.abs(enemy3position - position)<=4 ){
life-=1;
}
enemy4position-=1;
if(enemy4pose == 0){
enemy4pose =1;
}else{enemy4pose=0;}
if(Math.abs(enemy4position - position)>=0 && Math.abs(enemy4position - position)<=4 ){
life-=1;
}
enemy5position-=1;
if(enemy5pose == 0){
enemy5pose =1;
}else{enemy5pose=0;}
if(Math.abs(enemy5position - position)>=0 && Math.abs(enemy5position - position)<=4 ){
life-=1;
}
repaint();
Thread.sleep(600);
}
}catch (Exception exc){exc.printStackTrace();}
}
}
//入力チェック
public void keyPressed(KeyEvent ke){
int keycode = ke.getKeyCode();
if (wait == false) {
if (keycode == KeyEvent.VK_ENTER) {
if(attackshown ==false){
attackshown = true;
if(heropose==0 || heropose==1){
if(enemy1position-position+4>=0 && enemy1position-position+4<=3 ){
enemy1status=false;
}
}
if(heropose==2 || heropose==3){
if(enemy1position- position-3>=-3 && enemy1position - position-3<=0){
enemy1status=false;
}
}
if(heropose==0 || heropose==1){
if(enemy2position-position+4>=0 && enemy2position-position+4<=3 ){
enemy2status=false;
}
}
if(heropose==2 || heropose==3){
if(enemy2position- position-3>=-3 && enemy2position - position-3<=0){
enemy2status=false;
}
}
if(heropose==0 || heropose==1){
if(enemy3position-position+4>=0 && enemy3position-position+4<=3 ){
enemy3status=false;
}
}
if(heropose==2 || heropose==3){
if(enemy3position- position-3>=-3 && enemy3position - position-3<=0){
enemy3status=false;
}
}
if(heropose==0 || heropose==1){
if(enemy4position-position+4>=0 && enemy4position-position+4<=3 ){
enemy4status=false;
}
}
if(heropose==2 || heropose==3){
if(enemy4position- position-3>=-3 && enemy4position - position-3<=0){
enemy4status=false;
}
}
if(heropose==0 || heropose==1){
if(enemy5position-position+4>=0 && enemy5position-position+4<=3 ){
enemy5status=false;
}
}
if(heropose==2 || heropose==3){
if(enemy5position- position-3>=-3 && enemy5position - position-3<=0){
enemy5status=false;
}
}
}
repaint();
}
if (keycode == KeyEvent.VK_RIGHT) {
//背景を動かす
if(position <=58){
if(position >=-5 && position <= 49){
back +=32;
objectback+=32;
}else{
heroposition+=32;
}
position +=1;
enemy1position -=1;
if(enemy1status == true){
if(Math.abs(enemy1position - position)>=0 && Math.abs(enemy1position - position)<=4 ){
life-=1;
}
}
enemy2position -=1;
if(enemy2status == true){
if(Math.abs(enemy2position - position)>=0 && Math.abs(enemy2position - position)<=4 ){
life-=1;
}
}
enemy3position -=1;
if(enemy3status == true){
if(Math.abs(enemy3position - position)>=0 && Math.abs(enemy3position - position)<=4 ){
life-=1;
}
}
enemy4position -=1;
if(enemy4status == true){
if(Math.abs(enemy4position - position)>=0 && Math.abs(enemy4position - position)<=4 ){
life-=1;
}
}
enemy5position -=1;
if(enemy1status == true){
if(Math.abs(enemy5position - position)>=0 && Math.abs(enemy5position - position)<=4 ){
life-=1;
}
}
}
if (back>=640) {
back=0;
}
//キャラクターのポーズを変える
if (heropose == 0 || heropose==2){
heropose=1;
}else{
heropose=0;
}
repaint();
}
if (keycode == KeyEvent.VK_LEFT) {
//背景を動かす
if(position >=-7){
if(position >=-5 && position <=49){
back -=32;
objectback-=32;
}else{
heroposition-=32;
}
position -=1;
enemy1position+=1;
if(enemy1status == true){
if(Math.abs(enemy1position - position)>=0 && Math.abs(enemy1position - position)<=4 ){
life-=1;
}
}
enemy2position+=1;
if(enemy2status == true){
if(Math.abs(enemy2position - position)>=0 && Math.abs(enemy2position - position)<=4 ){
life-=1;
}
}
enemy3position+=1;
if(enemy3status == true){
if(Math.abs(enemy3position - position)>=0 && Math.abs(enemy3position - position)<=4 ){
life-=1;
}
}
enemy4position+=1;
if(enemy4status == true){
if(Math.abs(enemy4position - position)>=0 && Math.abs(enemy4position - position)<=4 ){
life-=1;
}
}
enemy5position+=1;
if(enemy5status == true){
if(Math.abs(enemy5position - position)>=0 && Math.abs(enemy5position - position)<=4 ){
life-=1;
}
}
}
if (back<=-640) {
back=0;
}
//キャラクターのポーズを変える
if (heropose == 0 || heropose==2){
heropose=3;
}else{
heropose=2;
}
repaint();
}
if (keycode == KeyEvent.VK_DOWN) {
if (position>= 15 && position<=19 && shown==false) {
string = "Don't go. There is a dangerous cave.";
shown=true;
wait = true;
}
if(position >= 58 && position <=62 && shown == false){
string = "goal!!";
shown=true;
freeze = true;
}
}
}else if(wait == true){
if (keycode == KeyEvent.VK_ENTER) {
if (shown==true ) {
string="";
shown=false;
wait = false;
}
}
}else if(freeze == true){
}
repaint();
}
public void keyTyped(KeyEvent ke){
}
public void keyReleased(KeyEvent ke){
if(attackshown == true){
attackshown = false;
}
repaint();
}
}
最終更新:2007年02月01日 01:56