如何改进我的Processing节奏游戏的原型?

时间:2015-05-21 21:12:28

标签: java javascript processing

我正在尝试在类似于Osu的Processing中创建一个节奏游戏。该游戏应该根据正在播放的音乐创建一个块。在我所处的阶段,只要音乐播放,游戏就会挂起。音乐也被扭曲了。请帮忙!

int start;
float xpos;
float ypos;

int counter = 0;

Boolean menu = true;
Boolean game = false;

import ddf.minim.*;

click Clicker;

Minim minim;
AudioPlayer song;

void setup() {
  size (800,800);
  Clicker = new click();
  start = millis();

}

void draw() {
  if (menu) {
    text("Welcome to My Game!", 300, 350);
    text("Get ready to play", 400, 375);
    text("Click on the screen to start", 275, 400);
    textSize(35);


  }

  if(game) {
    Clicker.display();
    Clicker.click();
    Clicker.gui();

    int timer = millis()/1000;
    text("Time: "+ timer, 10, 760);

    minim = new Minim(this);
    song = minim.loadFile("Bohemian Rhapsody.mp3");
    song.play();

  }
}

class click {
  float xpos;
  float ypos = 50;
  float wide;
  float high;
  float colour;

  click() {
    wide = 30;
    high = 30;
   colour = 45;
  }

  void display() {
    background (255);
    fill(colour);
    rect(xpos, ypos, wide, high);
  }

  void click() {
    if (mousePressed) {
      if (mouseX >= xpos && mouseX <= xpos + 30) {
        if (mouseY >= ypos && mouseY <= ypos + 30) {
          counter = counter + 1;
          xpos = random(0, 750);
          ypos = random(50, 650);
        }
      }
    }
  }

  void gui() {
    text("Score: " + counter, 10, 790);
    textSize(35);
    line(0, 700, 800, 700);
  }
}

void mousePressed() {
  if (menu) {
    menu = false;
    game = true;
  }
}

1 个答案:

答案 0 :(得分:0)

有一些事情要修复和改进:

  1. 语法/流程
  2. 游戏设计
  3. 节奏游戏
  4. <强> 1。语法/流程

    音乐可能失真的原因是因为你在draw()函数中多次初始化minim库。同样,你应该为你的歌曲调用一次play()。这是代码的一个版本,移动了几行:

    import ddf.minim.*;
    
    float xpos;
    float ypos;
    
    int counter = 0;
    
    Boolean menu = true;
    Boolean game = false;
    
    click Clicker;
    
    Minim minim;
    AudioPlayer song;
    
    void setup() {
      size (800,800);
      Clicker = new click();
      //initialize the library once, when you setup
      minim = new Minim(this);
      song = minim.loadFile("Bohemian Rhapsody.mp3");
    }
    
    void draw() {
      if (menu) {
        text("Welcome to My Game!", 300, 350);
        text("Get ready to play", 400, 375);
        text("Click on the screen to start", 275, 400);
        textSize(35);
    
    
      }
    
      if(game) {
        Clicker.display();
        Clicker.click();
        Clicker.gui();
    
        int timer = millis()/1000;
        text("Time: "+ timer, 10, 760);
    
      }
    }
    
    class click {
      float xpos;
      float ypos = 50;
      float wide;
      float high;
      float colour;
    
      click() {
        wide = 30;
        high = 30;
       colour = 45;
      }
    
      void display() {
        background (255);
        fill(colour);
        rect(xpos, ypos, wide, high);
      }
    
      void click() {
        if (mousePressed) {
          if (mouseX >= xpos && mouseX <= xpos + 30) {
            if (mouseY >= ypos && mouseY <= ypos + 30) {
              counter = counter + 1;
              xpos = random(0, 750);
              ypos = random(50, 650);
            }
          }
        }
      }
    
      void gui() {
        text("Score: " + counter, 10, 790);
        textSize(35);
        line(0, 700, 800, 700);
      }
    }
    
    void mousePressed() {
      if (menu) {
        menu = false;
        game = true;
        song.play();//play the song once, when entering game mode
      }
    }
    

    <强> 2。游戏设计

    网上有大量关于此主题的资源,只是简单地玩游戏应该有助于指出几个基本问​​题:

    • 游戏的目标/奖励是什么(水管工拯救王子,解决了难题)?
    • 游戏是如何运作的(规则/机制是什么/等级何时开始/结束/你赢/输/如何?)

    只要玩家选择点击一个框,您当前的版本就会显示一个永无止境的时间段,以及时间的增加。尝试为每个级别设置一个时间限制。您总是可以引入复杂性来升级(使用首选点击序列同时引入两个框等)。你已经提到过Osu节奏游戏,但是你应该真正地玩它并尝试将它的规则/算法分解为步骤。

    第3。节奏游戏

    关于节奏的有趣部分是你所看到的,你所听到的(这是一个很好的目标,以及你自己的目标)之间的紧密联系,以及你如何/何时互动。

    目前,如果您对音乐发表评论,这对游戏完全没有影响。与音乐根本没有任何关系。您应该尝试根据音乐中的关键时刻添加用户互动。 Minim已经提供了一些onset and beat detection。你应该玩一玩。 (或者,您可以尝试使用Echonest之类的软件或服务进行音乐分析并提取关键时刻,或者只是在软件中手动添加标记并导出csv文件(如果允许)

    玩得开心!