/* * 東京情報大学 高大連携授業用 プログラム * (C)2014 マッキン ケネスジェームス */ import jp.ac.tuis.basic.*; public class Racing { public static void main(String[] args) { //画面サイズ 40x20 フォントサイズ20 int WIDTH=40; int HEIGHT=20; int FONT=20; BasicGraphics g = new BasicGraphics(WIDTH,HEIGHT,FONT); g.console(false); //自動スクロールOFF(false) //変数宣言 int x=10; //プレイヤー x座標 int y; //マップ上のプレイヤーのy座標 char key=0; //入力キー long MINSLEEP=50; //最高速調整用 long ACCEL = 1; //加速調整用 long speed=200; //速度調整用 int distance=0; //走行距離 int GOAL=5000; //ゴール距離 boolean finish=false; //ゲーム終了フラグ boolean crash=false; //衝突フラグ //マップ初期化 String[] map = {" ■  凸             ■ ", "  ■       凸        ■", "  ■                ■", "  ■                ■", "  ■          凸     ■", "  ■                ■", "  ■   凸         凸  ■", "  ■                ■", "  ■      凸         ■", " ■                ■ ", " ■                ■ ", " ■             凸  ■ ", " ■                ■ ", " ■                ■ ", " ■                ■ ", "■                ■  ", "■       凸        ■  ", "■                ■  ", "■          凸     ■  ", "■                ■  ", "■    凸           ■  ", " ■                ■ ", " ■                ■ ", " ■            凸   ■ ", " ■                ■ ", " ■     凸          ■ ", " ■ 凸              ■ ", " ■                ■ ", " ■          凸     ■ ", " ■                ■ "}; //画面準備 y=map.length-1; //初期位置はマップの下端 int pos=y; //マップを描画 for(int j=HEIGHT-1; j>=0; j--){ g.locate(0,j); g.color(g.WHITE, g.BLACK); g.print(map[pos]); pos=pos-1; if(pos<0) pos=map.length-1; } //スタート合図 g.locate(8,10); g.color(g.WHITE, g.BLACK); g.print("READY!"); g.playM("O5C4R4C4R4C4R4O6G4"); //スタート音楽 g.locate(8,10); g.color(g.WHITE, g.BLACK); g.print(" "); /**********メインループ**********/ while(!finish){ //画面を描画 pos=y; for(int j=HEIGHT-1; j>=0; j--){ g.locate(0,j); g.color(g.WHITE, g.BLACK); g.print(map[pos]); pos=pos-1; if(pos<0) pos=map.length-1; } //キー入力 key=g.inkey(); if(key=='←') x=x-1; //左移動 if(key=='→') x=x+1; //右移動 //衝突判定 if(g.screen(x,HEIGHT-1)!=' ' && g.screen(x,HEIGHT-1)!=' '){ finish=true; crash=true; } //自機描画 g.locate(x,HEIGHT-1); if(!crash) { //衝突していない g.color(g.WHITE, g.BLACK); g.print("▲"); }else{ //衝突した g.color(g.RED, g.BLACK); g.print("★"); g.playM("N"); //ノイズ音 } //距離計算 y=y-1; //マップ上のy座標を変更 if(y<0) y=map.length-1; distance = distance + 10; //距離加算 g.locate(21,0); g.color(g.WHITE, g.BLACK); g.print("DISTANCE="+distance+"m"); //距離表示 //ゴール確認 if(distance>=GOAL){ //ゴールした finish=true; } //ゲーム速度調整 speed = speed - ACCEL; //スピードを少し上げる if(speed < MINSLEEP) speed = MINSLEEP; //最大スピード g.sleep(speed); //スピード調整(待ちを入れる) }//while(!finish) メインループここまで //終了表示 if(crash){ //衝突した場合 g.locate(8,10); g.color(g.RED, g.BLACK); g.print("CRASH!"); g.playM("RO4CO3C"); //ブザー }else{ //ゴールした場合 g.locate(8,10); g.color(g.YELLOW, g.BLACK); g.print("GOAL!"); g.playM("O7C16D16E16F16G16"); //ファンファーレ } }//main() }//class