質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

0回答

3794閲覧

processingのシューティングゲームについて

退会済みユーザー

退会済みユーザー

総合スコア0

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2017/07/30 08:16

編集2017/07/30 08:21

現在processingを用いて作ったシューティングゲームで、スコアを表示と敵機を倒すとスコアが上がるようにしたいのですがどのようなソースコードにすればよいかわかりません、ご教授お願いします。

PFont myFont; SpaceShip myShip; int numOfEnemies = 3; SpaceShip[] enemy = new SpaceShip[numOfEnemies]; int numOfMaxShots = 50; Shot[] shots = new Shot[numOfMaxShots]; int nextShot = 0; int numOfMaxBombs = 50; Bomb[] bombs = new Bomb[numOfMaxBombs]; int nextBomb = 0; boolean keyLeft = false; boolean keyRight = false; boolean keyUp = false; boolean keyDown = false; void setup() { size(600, 600); background(255, 255, 255); fill(0, 0, 0); noStroke(); frameRate(60); myFont = createFont("YuGothic", 24, true); textFont(myFont); myShip = new SpaceShip(loadImage("fighter.png"), 100, 500, 3, 1); myShip.visible = true; for(int i = 0; i < numOfEnemies; i++) { enemy[i] = new SpaceShip(loadImage("DurrrSpaceShip.png"), i * 100 + 50, i * 50 + 100, 3, 2); enemy[i].visible = true; } for(int i = 0; i < numOfMaxShots; i++) { shots[i] = new Shot(0, height + 100, color(255, 255, 0)); } for(int i = 0; i < numOfMaxBombs; i++) { bombs[i] = new Bomb(0, -100, color(255, 0, 0)); } } void draw() { background(0); myShip.draw(); myShipController(); drawEnemies(); drawBombs(); enemyController(); shotsController(); collisionDetection(); } void drawEnemies() { for(int i = 0; i < numOfEnemies; i++) { enemy[i].draw(); } } void enemyController() { for(int i = 0; i < numOfEnemies; i++) { if(enemy[i].xpos < 0 || enemy[i].xpos + enemy[i].getWidth() > width) { enemy[i].speed = - enemy[i].speed; } enemy[i].moveXaxis(); if(enemy[i].visible) { if(floor(random(50)) == 5) { bombs[nextBomb].xpos = enemy[i].xpos + enemy[i].getWidth() / 2; bombs[nextBomb].ypos = enemy[i].ypos + enemy[i].getHeight(); bombs[nextBomb].visible = true; nextBomb = (nextBomb + 1) % numOfMaxBombs; } } } } void drawBombs() { for(int i = 0; i < numOfMaxBombs; i++) { bombs[i].draw(); bombs[i].move(); } } void collisionDetection() { for(int i = 0; i < numOfEnemies; i++) { for(int j = 0; j < numOfMaxShots; j++) { if(enemy[i].visible && enemy[i].isIn(shots[j].xpos, shots[j].ypos)) { enemy[i].visible = false; shots[j].visible = false; } } } for(int i = 0; i < numOfMaxBombs; i++) { if(bombs[i].visible && myShip.isIn(bombs[i].xpos, bombs[i].ypos)) { myShip.visible = false; bombs[i].visible = false; } } } void keyPressed() { if(key == 'd') { keyRight = true; } if(key == 'a') { keyLeft = true; } if(key == 'w') { keyUp = true; } if(key == 's') { keyDown = true; } } void keyReleased() { if(key == 'a') { keyLeft = false; } else if(key == 'd') { keyRight = false; } else if(key == 'w') { keyUp = false; } else if(key == 's') { keyDown = false; } else if(keyCode == ' ') { fire(); } } void myShipController() { if(keyLeft) { myShip.speed = - abs(myShip.speed); if(myShip.xpos + myShip.speed >= 0) { myShip.moveXaxis(); } } else if(keyRight) { myShip.speed = abs(myShip.speed); if(myShip.xpos + myShip.getWidth() + myShip.speed <= width) { myShip.moveXaxis(); } } else if(keyUp) { myShip.speed = - abs(myShip.speed); if(myShip.ypos + myShip.speed >= 0) { myShip.moveYaxis(); } } else if(keyDown) { myShip.speed = abs(myShip.speed); if(myShip.ypos + myShip.getHeight() + myShip.speed <= height) { myShip.moveYaxis(); } } } void shotsController() { for(int i = 0; i < numOfMaxShots; i++) { shots[i].draw(); shots[i].move(); } } void fire() { if(myShip.visible) { shots[nextShot].xpos = myShip.xpos + myShip.getWidth() / 2; shots[nextShot].ypos = myShip.ypos; shots[nextShot].visible = true; nextShot = (nextShot + 1) % numOfMaxShots; } } class SpaceShip { PImage img; int xpos; int ypos; int speed; int scale; boolean visible = false; SpaceShip(PImage _img, int _xpos, int _ypos, int _speed, int _scale) { img = _img; xpos = _xpos; ypos = _ypos; speed = _speed; scale = _scale; } void draw() { if(visible) { image(img, xpos, ypos, getWidth(), getHeight()); } } void moveXaxis() { xpos += speed; } void moveYaxis() { ypos += speed; } int getWidth() { return img.width / scale; } int getHeight() { return img.height / scale; } boolean isIn(int x, int y) { if(x >= xpos && x <= xpos + getWidth() && y >= ypos && y <= ypos + getHeight()) { return true; } else { return false; } } } class Shot { int xpos; int ypos; color c; int speed = 4; boolean visible = false; Shot(int _xpos, int _ypos, color _c) { xpos = _xpos; ypos = _ypos; c = _c; } void draw() { fill(c); if(visible) { rect(xpos, ypos, 5, 10); } } void move() { if(ypos > -50) { ypos -= speed; } else { visible = false; } } } class Bomb { int xpos; int ypos; color c; int speed = 3; boolean visible = false; Bomb(int _xpos, int _ypos, color _c) { xpos = _xpos; ypos = _ypos; c = _c; } void draw() { fill(c); if(visible) { fill(c); ellipse(xpos, ypos, 10, 10); } } void move() { if(visible && ypos < height + 50) { ypos += speed; } else { visible = false; } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問