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

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

ただいまの
回答率

90.52%

  • Java

    13753questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Processing

    254questions

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

二つのゲームを一つのゲームにしたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 124

AzukiV

score 3

なんとかしてゲームを二つ作りました。
下記の二つのゲームを一つのゲームにしたいのですが、方法がよく分かりません。

私がとった方法は、一つのゲーム中のvoid setup(),void draw()の中にもう一つのゲームのvoid draw(),void setup()の内容を書くというものです。

しかし、エラーが生じてしまいました。

下記の二つのゲームを一つのゲームとして成り立たせたいです。
ゲーム概要は青いボール(敵)を避けながら、上から降ってくる赤いボール(仲間)に触れるというものです。 

float frbally; //仲間ボールのy座標

float frsp=0; //仲間ボールの速度
float fra=0; //仲間ボールの加速度
float g = 3;


float touch=0;

void setup(){

  size(500,650);

  frballx=width/2;
}

void draw(){
  background(255);
  smooth();

  frsp = frsp + g /30+fra;
  frbally = frbally + frsp;

  stroke(255,0,0);
  fill(255,0,0);
  ellipse(frballx,frbally,30,30);

  if(frbally>665){
    textSize(20);
    text("GameOver",20,20);
    frameRate(0);
  }
  if(mouseX>frballx-30 && mouseX<frballx+30 && mouseY>frbally-30 && mouseY<frbally+30){

    touch=80;

     fra=0.0001;

     next(); //次の球がでる
     }}

//次の球の設定  
void next(){
     frbally=-200; 
     frsp=0;
     frballx=20 + random(465);

}
enball[] ball = new enball[7]; //敵ボールの定義

int i = 0;  // forに使う
int j= 0;  // 同上

int M7 = 0;  // ボールが7個ある

float[] enballx = new float[7]; // 敵ボールの座標
float[] enbally = new float[7]; // 
int flg = 0;


void setup() {

  size(500,650);

  for (i = 0; i < 7; i=i+1) {

    ball[i] = new enball(30, 30, 30, 30); //敵ボール

   ball[j].set(mouseX + 15, mouseY + 15, random(5, 8), random(5,8)); //(float X, float Y, float enspX, float enspY) enspXは敵のボールのX速度 enspYは敵ボールのY速度

  j=j+1;
  if (j == 7) {   
     j = 0;
    M7 = 1;  
  }
}
}


void draw() {
  background(255);
  for (i = 0; i < 7; i=i+1) {

    ball[i].latest(); //最新の画面に切り替える       
    ball[i].hitwall(); //画面の上下左右端に当たったときの設定用
    ball[i].ballfun();          //ボールの設定用 function

    hitme();  // ボールが自機にヒットしたときの設定用
  }
  stroke(255,0,0);
  fill(255,0,0);
  rect(mouseX-5, mouseY-5, 10, 10); //自機の設定

}



class enball {  //敵ボール

  PVector posi;  //位置を定義
  PVector ensp;  //速度を定義
  enball(float X, float Y, float enspX, float enspY) { 

    posi = new PVector(X, Y);   //向きベクトル
    ensp = new PVector(enspX, enspY); //速度ベクトル
  }


  void latest() {  
    posi.add(ensp);  //位置+速度
  }


  void hitwall() {  
    if ((posi.x > width)||(posi.x < 0)) {
      ensp.x = -ensp.x;  //ボールが左右の壁に触れると反射
    }
    if ((posi.y > height)||(posi.y < 0)) {
      ensp.y = -ensp.y;  //ボールが上下の壁に触れると反射
    }
  }

  void ballfun() {  
    stroke(0,0,255);               
    fill(0,0,255);               
    ellipse(posi.x+10, posi.y+10, 30, 30);  //ボールの描画
    enballx[i] = posi.x;
    enbally[i] = posi.y;
  }

  void set(float X, float Y, float enspX, float enspY) {  //位置、速度
    posi.set(X, Y);   
    ensp.set(enspX, enspY);  
  }

}


void hitme() {  //敵ボールが自機ふヒットしたときGameOver

  if (M7 == 1 && mouseX + 18 > enballx[i] && mouseX - 18 < enballx[i] && mouseY + 18 > enbally[i] && mouseY - 18 < enbally[i] || flg == 1) {

    fill(255,0,0);  // 文字色
    textSize(20);
    text("GameOver",20,20);
    noLoop();  
  }
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • KSwordOfHaste

    2018/06/05 19:59

    既に前の質問に既にコメントがよせられてます。内容がほぼ同じに思えるので、こちらの質問は止して(できれば削除依頼を出して)前の質問の方で回答をつのるべきと思います。

    キャンセル

  • AzukiV

    2018/06/05 20:26

    すでに出しているのですが、まだ削除されていないみたいです。タイトルに明記しておきます

    キャンセル

回答 1

check解決した方法

-1

定義
setup
draw
class
function

のタブを作り見やすくしたうえで、二つの要素を分けたらうまく動作した

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13753questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Processing

    254questions

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