140 likes | 299 Views
崖 っぷちの Hockey Game. ゲーム説明①. コンピュータ対戦 ・始め方 コンパイル →タイトル画面→ Enter →ゲーム開始 ・操作方法 マウス操作 ・終わり方 ゴール→ゲームオーバー画面→ Enter →タイトル画面. ゲーム説明②. ・始め方 コンパイル→タイトル画面→スペースキー→ゲーム開始 ・操作方法 左側・・・ X キーと S キー 右側・・・上下キー ・終わり方 コンピュータ対戦と同じ. ゲーム説明③. ホッケーが反射するたびに効果音がなる 対戦中 は BGM がなる. Start 画面.
E N D
ゲーム説明① コンピュータ対戦 ・始め方 コンパイル→タイトル画面→Enter→ゲーム開始 ・操作方法 マウス操作 ・終わり方 ゴール→ゲームオーバー画面→Enter→タイトル画面
ゲーム説明② ・始め方 コンパイル→タイトル画面→スペースキー→ゲーム開始 ・操作方法 左側・・・XキーとSキー 右側・・・上下キー ・終わり方 コンピュータ対戦と同じ
ゲーム説明③ • ホッケーが反射するたびに効果音がなる • 対戦中はBGMがなる
Start画面 • 起動すると“title.jpg”表示される。 • (game flag =0) • ENTER Key を押すと game flag =1 になり、コンピュータが相手の • ゲーム画面が表示される。 • SPACEKey を押すと game flag=3 になり、1対1の勝負ができるゲーム画面が表示される。 ImageIconicon3 = new ImageIcon("title.jpg"); image3 = icon3.getImage(); title_width= image3.getWidth(this); title_height= image3.getHeight(this); ImageIcon icon4 = new ImageIcon("start.jpg"); image4 = icon4.getImage(); title_width = image4.getWidth(this); title_height = image4.getHeight(this); if(game_flag==0){ start_x=d.width/10; start_y=6*d.height/10; g.drawImage(image3,title_x,title_y,this); g.drawImage(image4,start_x,start_y,this); }….. public void keyPressed(KeyEvent e){ int key=e.getKeyCode(); if(game_flag==0 && key==KeyEvent.VK_ENTER){ game_flag=1; } if(game_flag==0 && key==KeyEvent.VK_SPACE){ game_flag=3; }
if(game_flag==1||game_flag==3){ setBackground(Color.black); g.setColor(Color.red); g.fillRect(0,0,d.width,50); g.fillRect(0,d.height-50,d.width,50); g.fillRect(0,0,50,d.height/5); g.fillRect(d.width-50,0,50,gate1_y); g.fillRect(d.width-50,gate2_y,50,1500); g.fillRect(0,4*d.height/5,50,d.height/5); g.drawLine(d.width/2,0,d.width/2,d.height); g.drawOval(d.width/2-200,d.height/2-200,400,400); if(game_flag==3)jiki_x = d.width-150; g.drawImage(image1,jiki_x,jiki_y,this); g.drawImage(image2,teki_x,teki_y,this); if(ball_alive==1){ g.setColor(Color.white); g.fillOval(ball_x,ball_y,30,30); } } game画面 • コンピュータ対戦 操作方法 マウス ①ゲームの基本的な配置 ②Game flag=3は一人対戦 ③ball_alive==1はボールが コート上に存在していることを 示す。
if(game_flag==1){ if(ball_y>d.height/10 && ball_y+teki_height<9*d.height/10){ teki_y = ball_y; } ④敵機の動きはボールの Y座標と同じ。 ⑤自分のゲート(ゴール)の 開閉 if(gate_flag==0){ gate1_y -= 5; gate2_y += 5; if(gate1_y<50) gate_flag=1; } if(gate_flag==1){ gate1_y += 5; gate2_y -= 5; if(gate1_y>d.height/2-50) gate_flag=0; } if(ball_x<0 || ball_x>d.width){ ball_alive=0; game_flag=2; repaint(); } }
⑥壁の反射&効果音 if(kabe_flag1==1){ ball_x += 5+i; if ((ball_x+30>d.width-50 && (gate1_y>ball_y+15 || gate2_y<ball_y+15)) || (jiki_x<ball_x+30 && ball_x+30<jiki_x+jiki_width && jiki_y<ball_y+15 && (jiki_y+jiki_height>ball_y+15))){ pong.stop(); pong.play(); kabe_flag1 = 2; } } if(kabe_flag1==2){ ball_x -= 5+i; if((ball_x<40 && (d.height/5>ball_y || 4*d.height/5<ball_y)) || (ball_x<(teki_x+teki_width) && ball_x>teki_x && ball_y<(teki_y+teki_height) && ball_y>(teki_y-20))){ pong.stop(); pong.play(); kabe_flag1 = 1; } }
if(kabe_flag2==1){ ball_y += 5+i; if (ball_y>d.height-75){ pong.stop(); pong.play(); kabe_flag2 = 2; } } if(kabe_flag2==2){ ball_y -= 5+i; if(ball_y<40){ pong.stop(); pong.play(); kabe_flag2 = 1; } } ⑦壁の反射(続き) ボールの速さが徐々に早くなっていく。 (iも変数) ⑧初期ゲーム画面 if(game_flag==2){ ball_alive=1; ball_x=735; ball_y=455; i=0.0; bgm.stop(); }
if(game_flag==2){ g.drawImage(image5,gameover_x,gameover_y,this); } ⑨ゲームオーバー画面の表示 public void mouseMoved(MouseEvent me) { if(game_flag==1){ Dimension d; d = getSize(); jiki_x = d.width-150; if(me.getY()>50 && me.getY()<d.height-(jiki_height+50) && (Math.abs(jiki_x - me.getX()) < 200) && Math.abs(jiki_y - me.getY()) < 200) jiki_y = me.getY(); } } ⑩マウス操作 ⑪スタート画面に戻る if(game_flag==2 && key==KeyEvent.VK_ENTER){ game_flag=0; repaint(); }
if(ball_x<0){ ball_alive=0; game_flag=4; repaint(); } if(ball_x>d.width){ ball_alive=0; game_flag=5; repaint(); } if(game_flag==4||game_flag==5){ ball_alive=1; ball_x=735; ball_y=455; i=0.0; bgm.stop(); } 対戦ゲーム 操作 キー ⑫どちらかのゴールに 入ったかどうかの判定。 効果音に停止。 ボールの加速の停止。 if(game_flag==4){ setBackground(Color.red); } if(game_fla=5){ setBackground(Color.blue); } ⑬勝敗は色で表示
if(game_flag==3){ Dimension d; d = getSize(); if(key==KeyEvent.VK_DOWN){ jiki_y+=80; } if(key==KeyEvent.VK_UP){ jiki_y-=80; } if(key==KeyEvent.VK_X){ teki_y+=80; } if(key==KeyEvent.VK_S){ teki_y-=80; } if(jiki_y<50){ jiki_y=50; } if(jiki_y>d.height-130){ jiki_y=d.height-130; } if(teki_y<50){ teki_y=50; } if(teki_y>d.height-130){ teki_y=d.height-130; } } ⑭対戦ゲーム中のキー操作
if(game_flag==4 && key==KeyEvent.VK_ENTER){ game_flag=0; repaint(); } if(game_flag==5 && key==KeyEvent.VK_ENTER){ game_flag=0; repaint(); } ⑮勝敗の表示後、 ENTER Keyで スタート画面に戻る pong = Applet.newAudioClip(getClass().getResource("pong.wav")); bgm = Applet.newAudioClip(getClass().getResource("bgm.wav")); title = Applet.newAudioClip(getClass().getResource("title.wav")); ⑮BGM