日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了帶有Switch語句的主菜單的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

因此,對于一個學校項目,我必須用一個名為‘Processing’的程序創建一個游戲。
我正在使用Switch語句創建一個主菜單。為此,我想使用按鈕‘Start’、‘Help’和‘Exit’。我想使用這些按鈕來更改Switch語句的變量。因此,我使用”MICESEPRESSED”。問題是,我按的是哪個按鈕,給我的結果和‘退出’按鈕一樣。有沒有人能給我一些建議,教我如何更好地組織我的菜單,甚至讓我的按鈕工作起來?我正在使用一個名為‘ControlP5’的處理庫來制作按鈕。

以下是我到目前為止的代碼:

int mode; // 1: intro screen, 2: game  , 3: game over 

final int INTRO    = 1;
final int PLAY     = 2;
final int GAMEOVER = 3;

//==============================================================
void setup(){
size(1920,1080);
mode = 1;
}
//========================================================

void draw(){

  if(mode == 1){
    introScreen();   
  }
  else if (mode == 2){
    gameItself();   
  } 
   else if (mode == 3){
     gameOver();   
   }
   else println("mode error");{
   } 
}

void introScreen(){
mode = 1;
static int Page = 0;
import controlP5.*;


ControlP5 cp5;


 cp5= new ControlP5(this);
 switch(Page){

     case 0: // main menu
     cp5.addButton("Start").setValue(0).setPosition(1420,250).setSize(400,100);

     cp5.addButton("Exit").setValue(0).setPosition(1420,650).setSize(400,100);

     cp5.addButton("Help").setValue(0).setPosition(1420,450).setSize(400,100);
       break;

     case 1: //help menu

      cp5.addButton("Back").setValue(0).setPosition(1420,450).setSize(400,100);
        break;
   }



public void Start(){
 if(mousePressed){
   mode = 2; // switching to the game itself 
 }
  println("Start");
  }

  public void Exit(){
   if(mousePressed){
  exit(); }
  println("Exit");
  }

 public void Help(){


     Page = 1;

  println("Help");
  }

  public void Back(){
  if(mousePressed){
    Page  = 0;
  }
  println("Back");
  }




  void gameItself(){
// game and stuff
}

void gameOver(){
//gameover 
}

推薦答案

查看mousePressed事件的工作原理。您可能會使用此信息。

要實現通過單擊按鈕更改Page變量的目標,有多個選項。首先,我將使用更簡單的,不需要導入但只需檢查坐標的那個。然后我將執行相同的操作,但使用的是控件P5。

1.只是檢查點擊的位置

我將使用最基本的方法:檢測”點擊”并檢查它的坐標是否在按鈕內。

首先,我們將添加mouseClicked()方法。每次按下鼠標按鈕時都會調用此方法。

// I'm typing this out of IDE si there may be some quirks to fix in the code
void mouseClicked() {
  switch(Page) {
    case 0:
      if (mouseX > 1420 && mouseX < 1420+400 && mouseY > 250 && mouseY < 250+100) {
        // You're in the main menu and Start was clicked
      }
      if (mouseX > 1420 && mouseX < 1420+400 && mouseY > 650 && mouseY < 650+100) {
        // You're in the main menu and Exit was clicked
      }
      if (mouseX > 1420 && mouseX < 1420+400 && mouseY > 450 && mouseY < 450+100) {
        // You're in the main menu and Help was clicked
      }
      // You should use 'else if' instead of 3 different if, but I coded it like that so it would be easier to see the small differences between the coordinates
    case 1:
      if (mouseX > 1420 && mouseX < 1420+400 && mouseY > 450 && mouseY < 450+100) {
        // You're un the help menu and Back was clicked
      }
  }
}

如您所見,我只是使用您的按鈕的坐標和大小來檢查單擊是否位于其中。這是一種忍者的方式讓我擺脫這個問題。我不知道您對編程的了解有多深,否則我會建議您構建一個處理用戶輸入的類,但對于像家庭作業這樣的小練習來說,這種方法很容易管理。

2.設計控件P5按鈕

我不是ControlP5專家,因此我們將密切關注基本知識。

我會直截了當地說,您提供的代碼充滿了問題,而且沒有太多行,所以我不會指出哪里出了問題,而是給您一些可以工作的框架代碼,您可以在這些代碼上建立一些理解。我會給你工具,然后你就可以讓你的項目工作了。

當您設計按鈕時,如果您在同一對象中設計它們,它們將共享一些屬性。例如,您的所有按鈕將同時可見或不可見。您不需要一直重新繪制它們,因為它們已經處理了這一點,所以您需要使用其他方法來管理它們。

您應該將按鈕設計為全局對象(就像您所做的那樣),并將它們添加到ControlP5對象中,這是最有意義的。如果你愿意,你可以讓每個對象有一個按鈕,或者如果它們鏈接在一起,你可以有多個按鈕,例如,同時出現的所有”菜單”按鈕可能屬于同一個對象。如果您只為整個程序設計一次按鈕,請使用setup()方法設計按鈕。當然,如果這不僅僅是一個家庭作業,您可能希望避免按鈕是全局的,但將它們保存在內存中以用于短項目會容易得多。

按鈕的”名稱”也是當您單擊它時它將嘗試調用的方法的名稱。兩個按鈕不能共享相同的”名稱”。按鈕可以有一個設置值,該值將被發送到它們調用的方法。

您不需要使用Processing的鼠標事件來使按鈕工作。它們是自給自足的:它們有自己的事件,比如被點擊或檢測鼠標何時經過它們。Here’s the documentation for the full list of the methods included in the ControlP5 buttons。

您不需要管理draw()循環中的按鈕。他們自己管理。

下面是一些框架代碼,用于演示我剛才所說的內容。您可以將其復制并粘貼到新的處理項目中,然后運行它以查看正在進行的操作。

ControlP5 cp5;
ControlP5 flipVisibilityButton;
int Page = 0;

void setup() {
  size(1920, 800);
  textAlign(CENTER, CENTER);
  textSize(60);
  fill(255);

  cp5 = new ControlP5(this);    // this is ONE object, which will own buttons.
  cp5.addButton("MenuButton0")  // this is the name of the button, but also the name of the method it will call
    .setValue(0)  // this value will be sent to the method it calls
    .setPosition(1420, 250)
    .setSize(400, 100);
  cp5.addButton("MenuButton1")
    .setValue(1)
    .setPosition(1420, 450)
    .setSize(400, 100);
  cp5.addButton("MenuButton2")
    .setValue(2)
    .setPosition(1420, 650)
    .setSize(400, 100);

  flipVisibilityButton = new ControlP5(this);  // this is a different object which own it's own controls (a button in this case)
  flipVisibilityButton.addButton("flipVisibility")
    .setValue(2)
    .setPosition(200, height/2)
    .setSize(200, 100);
}

void draw() {
  // No button management to see here
  background(0);
  // showing which button has been pressed while also keeping watch to see if the mouse is over one of the cp5 buttons
  text(Page + "
" + cp5.isMouseOver(), width/2, height/2);
}

void MenuButton0(int value) {
  ChangePage(value);
}

void MenuButton1(int value) {
  ChangePage(value);
}

void MenuButton2(int value) {
  ChangePage(value);
}

void ChangePage(int value) {
  Page = value;
}

void flipVisibility(int value) {
  // When the buttons are invisible, they are also unclickable
  cp5.setVisible(!cp5.isVisible());
}

您應該能夠在此示例上展開您的項目,但如果您有困難,請毫不猶豫地在此處進行評論并提出進一步的問題。玩得開心!

這篇關于帶有Switch語句的主菜單的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:Switch 主菜 帶有 語句
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定