OneHourProcessing 三日目
OneHourProcessing 三日目
今日作ったのはこんな感じの避けゲー
#OneHourProcessing #Proessing
— 霜暮黒夢@V高専生 (@V_hero_aid) August 6, 2020
三日目の作品です
ただの避けゲー
一応グレイズっぽいのも付いてます
作るのにかかった時間は「1時間10分10秒」
またこいつ時間オーバーしてるよ… pic.twitter.com/kItU7NMWFg
かかった時間は「1時間10分」。
またオーバーしました…
コード
ArrayList<Enemy> enemys = new ArrayList<Enemy>(); int Time; int Score; PVector PlayerPos = new PVector(400, 400); int PlayerSize = 20; int PlayerCoreRadius = 5; int PlayerCanMove = 3; String Phase = "GAME"; void setup() { size(800, 450); noFill(); } void draw() { background(0); if (Phase.equals("END")) { textSize(50); textAlign(CENTER, CENTER); text("GAME OVER (SCORE : " + Score + ")", width / 2, height / 2); return; } Time++; Score = Time; boolean isTouch = false; if (Time % 5 == 0) enemys.add(new Enemy(new PVector(random(width), -5), new PVector(0, 5), new PVector(0, 0), 10)); for (Enemy enemy : enemys) { enemy.update(); enemy.display(); if (enemy.isTouch(PlayerPos, PlayerCoreRadius)) Phase = "END"; if (enemy.isTouch(PlayerPos, PlayerSize)) { isTouch = true; Score += 5; } } for (int i = 0; i < enemys.size(); i++) if (enemys.get(i).isDestroy()) { enemys.remove(i); i--; } PlayerUpdate(); PlayerDisplay(isTouch); textSize(20); textAlign(LEFT, CENTER); text("TIME :" + (Time / 60), 10, 10); text("SCORE:" + Score, 10, 30); text("MOVE :(ArrowKey)", 10, 50); text("RESET:(EnterKey)", 10, 70); } void keyPressed() { if (keyCode == ENTER) reset(); } void reset() { Time = 0; enemys.clear(); PlayerPos = new PVector(400, 400); Phase = "GAME"; } void PlayerUpdate() { if (keyPressed) { switch(keyCode) { case LEFT: PlayerPos.x -= PlayerCanMove; break; case RIGHT: PlayerPos.x += PlayerCanMove; break; case UP: PlayerPos.y -= PlayerCanMove; break; case DOWN: PlayerPos.y += PlayerCanMove; break; } } if (PlayerPos.x < 0) PlayerPos.x = 0; if (PlayerPos.x > width) PlayerPos.x = width; if (PlayerPos.y < 0) PlayerPos.y = 0; if (PlayerPos.y > height) PlayerPos.y = height; } void PlayerDisplay(boolean isTouch) { float rad = PI / 180 * Time; float sixty = PI / 3 * 2; strokeWeight(1); stroke(255); ellipse(PlayerPos.x, PlayerPos.y, PlayerCoreRadius * 2, PlayerCoreRadius * 2); if (isTouch) stroke(255, 0, 0); pushMatrix(); translate(PlayerPos.x + 5, PlayerPos.y); rotate(-PI / 2); triangle(cos(-rad) * PlayerSize, sin(-rad) * PlayerSize, cos(-rad + sixty) * PlayerSize, sin(-rad + sixty) * PlayerSize, cos(-rad + sixty * 2) * PlayerSize, sin(-rad + sixty * 2) * PlayerSize); rotate(PI / 2); translate(-10, 0); rotate(-PI / 2); triangle(cos(rad) * PlayerSize, sin(rad) * PlayerSize, cos(rad + sixty) * PlayerSize, sin(rad + sixty) * PlayerSize, cos(rad + sixty * 2) * PlayerSize, sin(rad + sixty * 2) * PlayerSize); popMatrix(); }
Enemyクラス
class Enemy { PVector pos; PVector vec; PVector acc; int radius; Enemy(PVector pos, PVector vec, PVector acc, int radius) { this.pos = pos; this.vec = vec; this.acc = acc; this.radius = radius; } void update() { vec.add(acc); pos.add(vec); } void display() { strokeWeight(radius / 2); stroke(255); ellipse(pos.x, pos.y, radius * 2, radius * 2); } boolean isDestroy() { return pos.y > height + radius; } boolean isTouch(PVector player_pos, float player_size) { return pos.dist(player_pos) <= radius + player_size; } }