前提・実現したいこと
turtleライブラリでモグラ叩きのゲームを作っています(モグラの代わりにゾンビが動く設定です)
ゾンビを地面のあちこちに移動させたいのですが、カウントダウンに合わせてsleep(0.1)にすると、ゾンビの動きが速くて、ゲームがやりづらい状況となっています。そのため、ゾンビの動きをゆっくりにして、なおかつカウントダウンタイマーとハンマーが正常に動くようにしたいです。もし今のやり方で修正できなければ、他の方法を教えて頂きたいです。
発生している問題・エラーメッセージ
今のままだと、エラーメッセージは出ていませんが、ゾンビの動きが速すぎて
ハンマーでゾンビをたたくことが難しくなっています。
該当のソースコード
Java
java
1//タートルを動かす処理 2 public void start() { 3 hide(); 4 //ウィンドウを設定する 5 window.warp(40, 40); 6 window.size(1200, 700); 7 //背景画像を呼び出す 8 ImageTurtle grass = new ImageTurtle("image\tochi_akichi.png"); 9 //背景画像のサイズ設定 10 grass.size(1300,900); 11 grass.warp(600,300); 12 13 //音楽準備 14 SoundTurtle bgm1 = new SoundTurtle("bgm.mp3"); 15 bgm1.loadOnMemory(); 16 bgm1.play(); 17 SoundTurtle effect1 = new SoundTurtle("powerdown02.mp3"); 18 effect1.loadOnMemory(); 19 SoundTurtle effect2 = new SoundTurtle("打撃音_2.mp3"); 20 effect2.loadOnMemory(); 21 SoundTurtle effect3 = new SoundTurtle("ok.mp3"); 22 effect3.loadOnMemory(); 23 24 //タイマーの看板準備 25 ImageTurtle kanban = new ImageTurtle("image\wood_kanban2.png"); 26 27 //タイマーのテキスト準備 28 TextTurtle second = new TextTurtle("秒"); 29 TextTurtle n = new TextTurtle("残り"); 30 second.warp(150,100); 31 n.warp(50,100); 32 33 //zombie画像準備 34 ListTurtle<ImageTurtle> zombies = new ListTurtle<ImageTurtle>(); 35 zombies.hide(); 36 37 //zombieを6匹作成する 38 for ( int i=0; i<3; i=i+1) 39 { 40 zombies.addLast(new ImageTurtle("image\fantasy_zombie_man.png")); 41 zombies.addLast(new ImageTurtle("image\fantasy_zombie_woman.png")); 42 zombies.addLast(new ImageTurtle("image\human.png")); 43 } 44 update(); 45 zombies.get(0).size(180,180);//男ゾンビ 46 zombies.get(0).warp(250,500); 47 zombies.get(1).size(200,200);//女ゾンビ 48 zombies.get(1).warp(400,200); 49 zombies.get(2).size(180,180);//人間 50 zombies.get(2).warp(800,200); 51 zombies.get(3).size(180,180);//男ゾンビ 52 zombies.get(3).warp(600,200); 53 zombies.get(4).size(200,200);//女ゾンビ 54 zombies.get(4).warp(500,400); 55 zombies.get(5).size(180,180);//人間 56 zombies.get(5).warp(400,400); 57 zombies.get(6).size(180,180);//男ゾンビ 58 zombies.get(6).warp(1000,500); 59 zombies.get(7).warp(900,250);//女ゾンビ 60 zombies.get(7).size(200,200); 61 zombies.get(8).warp(600,500);//人間 62 zombies.get(8).size(180,180); 63 64 //ハンマー画像を呼び出す 65 ImageTurtle hammer = new ImageTurtle("image\wood_hammer.png"); 66 hammer.size(150,200); 67 ImageTurtle hammer2 = new ImageTurtle("image\hammer2.png"); 68 hammer2.hide(); 69 70 //タイマー準備 71 TextTurtle counter = new TextTurtle (""); 72 int number=460; 73 74 update(); 75 76 while(true){ 77 hammer.looks(hammer); 78 while(number>=0){ 79 //カウントダウンタイマー 80 sleep(0.1); 81 number =number-1; 82 counter.text(number/10); 83 //ハンマーをマウスにくっつける 84 int mx=mouseX(); 85 int my=mouseY(); 86 hammer.warp(mx,my); 87 //それぞれの画像の位置を取得 88 int x0=zombies.get(0).getX(); 89 int y0=zombies.get(0).getY(); 90 int x1=zombies.get(1).getX(); 91 int y1=zombies.get(1).getY(); 92 int x2=zombies.get(2).getX(); 93 int y2=zombies.get(2).getY(); 94 int x3=zombies.get(3).getX(); 95 int y3=zombies.get(3).getY(); 96 int x4=zombies.get(4).getX(); 97 int y4=zombies.get(4).getY(); 98 int x5=zombies.get(5).getX(); 99 int y5=zombies.get(5).getY(); 100 int x6=zombies.get(6).getX(); 101 int y6=zombies.get(6).getY(); 102 int x7=zombies.get(7).getX(); 103 int y7=zombies.get(7).getY(); 104 int x8=zombies.get(8).getX(); 105 int y8=zombies.get(8).getY(); 106 //横に移動 107 { 108 int r0 = random(201) + 150; 109 int r1 = random(401) + 150; 110 int r2 = random(601) + 150; 111 int r3 = random(501) + 150; 112 int r4 = random(301) + 150; 113 int r5 = random(801) + 150; 114 int r6 = random(401) + 150; 115 int r7 = random(901) + 150; 116 int r8 = random(501) + 150; 117 zombies.get(0).warp(x0+r0,y0); 118 zombies.get(1).warp(x1+r1,y1); 119 zombies.get(2).warp(r2,y2); 120 zombies.get(3).warp(r3,y3); 121 zombies.get(4).warp(r4,y4); 122 zombies.get(5).warp(x5+r5,y5); 123 zombies.get(6).warp(r6,y6); 124 zombies.get(7).warp(r7,y7); 125 zombies.get(8).warp(r8,y8); 126 } 127 //もしマウス(ハンマー)が男ゾンビに当たったら 128 if(leftMouseClicked()&&hammer.intersects(zombies.get(0))||leftMouseClicked()&&hammer.intersects(zombies.get(3))|| 129 leftMouseClicked()&&hammer.intersects(zombies.get(6))){ 130 hammer.looks(hammer2); 131 effect3.play(); 132 } 133 //もしマウスが(ハンマー)が人間に当たったら 134 else if(leftMouseClicked()&&hammer.intersects(zombies.get(2))||leftMouseClicked()&&hammer.intersects(zombies.get(5))|| 135 leftMouseClicked()&&hammer.intersects(zombies.get(8))){ 136 hammer.looks(hammer2); 137 effect2.play(); 138 } 139 //もしマウスが(ハンマー)が女ゾンビに当たったら 140 else if(leftMouseClicked()&&hammer.intersects(zombies.get(1))||leftMouseClicked()&&hammer.intersects(zombies.get(4))|| 141 leftMouseClicked()&&hammer.intersects(zombies.get(7))){ 142 hammer.looks(hammer2); 143 effect3.play(); 144 } 145 //普通の時 146 else { 147 hammer.looks(hammer); 148 } 149 update(); 150 if(number==0){ 151 bgm1.stop(); 152 //リザルト画面へ移行 153 grass.hide(); 154 kanban.hide(); 155 second.hide(); 156 n.hide(); 157 zombies.get(0).hide(); 158 zombies.get(1).hide(); 159 zombies.get(2).hide(); 160 zombies.get(3).hide(); 161 zombies.get(4).hide(); 162 zombies.get(5).hide(); 163 zombies.get(6).hide(); 164 zombies.get(7).hide(); 165 zombies.get(8).hide(); 166 hammer.hide(); 167 counter.hide(); 168 //リザルト画面の準備 169 SoundTurtle bgm2 = new SoundTurtle("LOVE HOME.mp3"); 170 bgm2.loadOnMemory(); 171 bgm2.play(); 172 ImageTurtle obake = new ImageTurtle("image\halloween_background_purple.png"); 173 obake.size(1500,600); 174 obake.warp(600,300); 175 update(); 176 TextTurtle result1= new TextTurtle("結果発表"); 177 result1.warp(600,70); 178 name("あなたの", "のレベルは"); 179 } 180 } 181 } 182 } 183 String name(String name1, String words1){ 184 String text = ""; 185 TextTurtle yourname = new TextTurtle( name1+ "さん"+words1); 186 yourname.warp(600,100); 187 return text; 188 } 189} 190
試したこと
warpとrandomを使ってゾンビがあちこちに動くようにしました。
sleepを0.5にしてみましたが、ハンマーとカウントダウンの動きが鈍くなりました。
補足情報(FW/ツールのバージョンなど)
Ronpro Editorのturtleを使用しています。
回答1件
あなたの回答
tips
プレビュー