2016-12-15 7 views
0

私は現在、ボタンをクリックして金鉱山を平準化することによってユーザーが金を集めるC#only(no Unity)アイドルゲーム(A.K.A clickerゲーム)を行っています。c#アイドルゲーム金額を追加する

namespace Business_Tycoon 
{ 
public partial class Form1 : Form 
{  
    public decimal level; 
    public decimal money; 
    public decimal revenue; 
    public decimal multiplier; 
    public decimal price; 
    public Form1() 
    { 
     InitializeComponent(); 
     start(); 
    } 
    void start() 
    { 
     money = 10;   
    } 

    void update() 
    { 
     money = money + revenue; 
    } 


    void button1_Click(object sender, EventArgs e) 
    { 
     price = ((price/100) * 150m); 
     level = (level + 1); 
     multiplier = 1.10m;     
     money = (money - price); 
     revenue = (level * multiplier);    
     button1.Text = "Price: " + price;     
     textBox1.Text = "Item Bought"; 
     label4.Text = "Money: " + Convert.ToString(money); 
     label1.Text = "Level: " + Convert.ToString(level); 
     label3.Text = "Revenue: " + Convert.ToString(revenue); 
    } 


    private void button2_Click(object sender, EventArgs e) 
    { 
     update(); 
    } 
} 

}

  • のButton1レベルのボタンであり、プレイヤが お金を差し引く、これをクリックすると、それはレベルアップ時の金鉱1つのレベル。
  • Button2はコレクトボタンで、これをクリックすると、金鉱山から作成された の収益が追加されます。

しかし、Button2から収集するには、まずプレイヤーがButton1をクリックしてレベルアップし、これを解決する方法がわかりません。プレイヤーは、収集ボタンをクリックし、金鉱山の収入が何であれ追加することができます。

してください誰かが助けcoud、ありがとう - マクシムス

答えて

0

以下を試してみてください。変数を初期化し、スレッドを使用して更新する必要がありました。私はタイマーを使いました。これは、利用可能な最も簡単なリソースだったからです。

public partial class Form1 : Form { 

    public decimal level { get; set; } 
    public decimal money { get; set; } 
    public decimal revenue { get; set; } 
    public decimal multiplier { get; set; } 
    public decimal price { get; set; } 

    private Timer Updater { get; set; } 

    public Form1() { 
     InitializeComponent(); 
     Updater = new Timer(); 
     Start(); 
    } 
    void Start() { 
     money = 10; 
     multiplier = 1.10m; 
     price = 5; 

     label1.Text = "Level: " + money.ToString(); 
     label3.Text = "Revenue: " + revenue.ToString(); 
     button1.Text = "Price: " + price.ToString(); 
     label4.Text = "Money: " + money.ToString(); 

     Updater.Interval = 1000; //interval in milliseconds || this will tick every second 
     Updater.Tick += Updater_Tick; 
     Updater.Start(); 
    } 

    private void Updater_Tick(object sender, EventArgs e) { 
      money += revenue; 

     label4.Text = "Money: " + money.ToString(); 


    } 

    void button1_Click(object sender, EventArgs e) { 
     if (money >= price) { 
      money -= price; 
      price = ((price/100)*150m); 
      button1.Text = "Price: " + price.ToString(); 
      level++; 
      label1.Text = "Level: " + money.ToString(); 
      label3.Text = "Revenue: " + revenue.ToString(); 
      revenue = level*multiplier; 


      textBox1.Text = "Item Bought"; 

     } 
    } 
} 
+0

助けてくれてありがとう、これは多くの助けになりました:) – Maximus

0

を私は本当にあなたの質問を理解していません。ユーザーがButton2をクリックした場合はどうなりますか?ユーザーが最初にButton1をクリックするようにしたい場合、Button2をデフォルトで無効に設定し、Button1をクリックすると有効にすることができます。どうすれば助けてくれるのか教えてください。

+0

問題は、ボタン2が押される前にまず収入の値を生成するためにボタン1を押してからでなければならないという問題です。ゲーム中いつでもボタン2を押して収入を得ることができます – Maximus

+0

@Maximus Then ... *ボタンを無効にしないでください? – Abion47