/** * HoppingMan CE version 1.02 * JDK1.1.x base * Copyright(C) 2000-2001 WakuWaku. * All rights reserved. */ import java.awt.*; import java.awt.event.*; import java.util.Random; public final class Hopmce extends Dialog implements Runnable { private Thread th; private static final char[][] STG; private static final int MAX,WAIT=25; private static final String MES[]; private int j,yo,mv,pw,y,x,ch,sc,now,stat,len,offset,scmax; private boolean make,load,key; private double f; private Random rand; private Image stg,bac,cha,off,mbac,title; static { MAX=7; STG=new char[MAX][350]; MES=new String[MAX]; STG[0]="111111000111111010001111111110000001111111111111111111111000000000000011111111111100001111111000111111111".toCharArray(); MES[0]="いちばん簡単な"; STG[1]="11111111111100111100011111010001110111100111111110000001111001111111111111111100000000000000111111111100111".toCharArray(); MES[1]="やや簡単な"; STG[2]="1111111111110000000000111111111000001111111111000001111000111000111111111000001111001110011111110010000111110011110011110011".toCharArray(); MES[2]="少し難しい"; STG[3]="1111111100001111111100110011001111000111111110011111100011110011111111100011100111001111001111100011100111".toCharArray(); MES[3]="まだまだ行ける"; STG[4]="110011010100000011111111100000000001111001110001111100010011111111111111111100000001111110000000011111111101".toCharArray(); MES[4]="わなに注意の"; STG[5]="111100000011110001111100011101110011110011001100110011111011100110011110011100111111111000011111111111111000000000011111100110011100011".toCharArray(); MES[5]="短いジャンプの"; STG[6]="11111111000000111110000111100011011100001111110011100110011100011111100000001111001110001111111111111001000000000011110110111100111000111111100000111100001100110011001100111110001110001100111111111111111110000001000000011111110000001111000101100111100110011100011111111111100011000000111111100000001110000110011".toCharArray(); MES[6]="伝説の激難"; } public static void main(String[] args) { new Hopmce(); } public boolean handleEvent(Event e) { if(e.id==e.WINDOW_DESTROY) { dispose(); System.exit(0); } return super.handleEvent(e); } public Hopmce() { super(new Frame()); setBackground(Color.white); setSize(160+4,160); setTitle("Hopping Man CE"); show(); start(); } public void start() { title=getToolkit().getImage("Hopmce.jpg"); rand=new Random(); stat=0; load=make=false; if(th==null) th=new Thread(this); //th.start(); } public void run() { Graphics g=off.getGraphics(); while(true) { switch(stat) { case 7: case 2:{ if(offset==0 && stat==2) { printChar(g); g.setClip(0,0,160,160); g.setFont(new Font("Dialog",Font.BOLD,16)); String s="Stage"+(now+1)+" Start" ,mes=MES[now]+"ステージ..."; g.setColor(Color.black); g.drawString(s,32,82); g.setColor(new Color(0xee,0x77,0x77)); g.drawString(s,30,80); g.setFont(new Font("Monospaced",Font.PLAIN,10)); g.setColor(Color.gray); g.drawString(mes,31,111); g.setColor(Color.lightGray); g.drawString(mes,30,110); } repaint(); if(stat==2) stat=3; else if(stat==7) { stat=0; repaint(); } break; } case 3:{ boolean jump=false; if(key) { pw+=(pw<30)?1:0; mv+=(mv<23)?1:0; x+=mv/3; printChar(g); repaint(); }else if(pw>0) { mv/=3.4; jump(); jump=true; }else if(yo>0) { yo--; x+=yo; printChar(g); repaint(); } down(); if(!jump) break; } case 4:{ y-=pw--; x+=mv; if(y>=119) { j=pw; y=119; pw=0; yo=mv; if(!down()) { j=-4; stat=3; } } printChar(g); repaint(); break; } case 5:{ if(yo<=0 && y>260) { offset=0; stat=2; loadMap(); break; } mv-=(mv>0)?1:0; yo=mv/4; y-=j; x+=yo; printChar(g); g.setClip(0,0,160,160); if(y>210) { g.setFont(new Font("Dialog",Font.PLAIN,18)); g.setColor(Color.black); g.drawString("Game Over",40,82); g.setColor(new Color(0xff,0,0)); g.drawString("Game Over",40,80); } repaint(); break; } case 6:{ x+=(x<(len*16-16))?1:0; x-=((x>(len*16-16))?1:0)*2; if(y>=119) { y=119; pw=10; }else pw--; y-=pw; printChar(g); g.setClip(0,0,160,160); g.setFont(new Font("Dialog",Font.PLAIN,12)); String s="Go to NextStage!"; int h; for(int i=0;i(len*16-16))?1:0)*2; if(y>=119) { y=119; pw=15; }else pw--; y-=pw; printChar(g); g.setClip(0,0,160,160); g.setFont(new Font("Dialog",Font.PLAIN,12)); String s="All Stage Clear!"; int h; for(int i=0;i=3) { key=true; }/*else if(nkey==27) { if(stat!=1) { offset=0; stat=7; now=0; } }*/ return true; } private void drawChar(Graphics g,Image img,int x,int y,int w,int h,int xx,int yy) { g.setClip(xx,yy,w,h); g.drawImage(img,xx-x,yy-y,this); } private void printChar(Graphics g) { if(scmax<=x) sc=x+160-len*16; drawChar(g,stg,x-sc,0,160,160,4,0); if(ch<8) { drawChar(g,cha,ch/2*16+32,0,16,20,sc+4,y+1); ch++; }else { drawChar(g,cha,2*16+32,0,16,20,sc+4,y+1); ch=2; } } public boolean mouseUp(Event e,int x,int y) { key=false; return true; } private void jump() { pw=pw*2/3; stat=4; } private boolean down() { int xx=x/16; if(xx>=len-2) { now++; f=0; if(now==MAX) { stat=8; }else { stat=6; offset=0; } return true; } if(STG[now][xx]=='0' && STG[now][xx+1]=='0') { if(yo>0) mv=yo*4; stat=5; return true; }else return false; } public void paint(Graphics g) { if(stat==0) { g.setColor(Color.white); g.drawString("Now Loading...",10,20); loadMap(); stat=1; repaint(); }else if(stat==1 || stat==7) { /*g.clearRect(0,0,320,200); g.setFont(new Font("Arial",Font.BOLD,20)); String s="HoppingMan CE"; g.drawString(s,9,81); g.setColor(new Color(0xee,0xee,0x77)); g.drawString(s,10,80); g.setFont(new Font("Arial",Font.PLAIN,12)); g.setColor(Color.black); g.drawString("Press",65,150); */ g.drawImage(title,18,24,this); }else if(stat>=2 && stat!=7) g.drawImage(off,0,0,this); } }