2

私はサイコロを振るプログラムを完成させ、あちこちで微調整してきました。現在、私のプログラムでは、ユーザーが好きなだけサイコロを振ることができますが、プレーヤーが特定の回数だけ許可されるように、別のコードを使用してみました。彼らがすべてのお金を失ったというメッセージを受け取る前のロールの数、たとえば、私のゲームは乱数を事前に決定する必要があります. 私は初心者です:(


コメントからのコード

private void button1_Click(object sender, EventArgs e) 
{ 
    rollagainLabel.Visible = true; 
    Random rand = new Random(); 
    roll1 = rand.Next(6) + 1; 
    int value = 100; 
    int sum = (roll1 * value); 
    runningTotal += sum; 
    totalmoneyLabel.Text = runningTotal.ToString("c"); 
    int maxRolls = rand.Next(5); 
    for (int i = 0; i < maxRolls; i++) 
        if (roll1 == 1) 
        {
            diceBox1.Image = GAME.Properties.Resources._1Die; 
        }
} 
4

3 に答える 3

4

プログラムの開始時に数値を計算して変数に保存し、プレーヤーがロールした回数を数えて、以前に計算された数値に達しているかどうかを確認します。

Random rand = new Random();
int maxRolls = rand.Next(10); // 10, or whatever you want the max possible limit to be

for(int i = 0; i < maxRolls; i++)
{
    roll(); // obviously this is not actual code to be used, but it gives you the structure. each roll goes inside this loop.
}
于 2012-10-30T03:58:55.710 に答える
0

maxRolls がゼロに等しいかどうかを確認してから、新しい乱数を作成します。次に、rollCount が maxRolls に等しいかどうかを確認し、そうであればすべてをリセットします。

public partial class Form1 : Form
{
    int runningTotal;
    int roll1;
    int maxRolls;
    int rollCount;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (maxRolls == 0)
        {
            Random getMax = new Random();
            rollagainLabel.Visible = false;
            maxRolls = getMax.Next(10) ;
        }
        else 
            if(rollCount >= maxRolls)
            {
                maxRolls = 0;
                rollagainLabel.Visible = true;
                rollCount = 0;
                runningTotal = 0;
                totalmoneyLabel.Text = "$0.0";
                return; 
            }

        Random rand = new Random();
        roll1 = rand.Next(6) + 1;
        int value = 100;
        int sum = (roll1 * value);
        runningTotal += sum;
        totalmoneyLabel.Text = runningTotal.ToString("c");
        rollCount += 1;

        if (roll1 == 1)
        {
                //diceBox1.Image = GAME.Properties.Resources._1Die;
        }

    }
}
于 2012-10-30T06:24:21.167 に答える
0

あなたがしたいことは、Page_Load イベントで乱数を生成することだと思います。その後、それをセッションに保存して、Button_Click イベントで使用して比較できるようにします。

    Random rand = new Random();
    Session["maxRolls"] = rand.Next(10);

その後、この方法で値を取得できます

    int maxRolls = (int)Session["maxRolls"];

編集

すべてを結び付けるサンプルコードは次のとおりです

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        int minAllowableRolls = 1;
        int maxAllowableRolls = 10;
        Random rand = new Random();
        Session["maxRolls"] = rand.Next(maxAllowableRolls - minAllowableRolls) + minAllowableRolls;
        Session["rollCount"] = 0;
        Session["runningTotal"] = 0;
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    int maxRolls = (int)Session["maxRolls"];
    int rollCount = (int)Session["rollCount"];
    int runningTotal = (int)Session["runningTotal"];

    rollCount++;
    if (rollCount < maxRolls)
    {
        Random rand = new Random();
        runningTotal += rand.Next(6) + 1;
        Label1.Text = runningTotal.ToString();
    }
    else
    {
        // Game has ended
    }
    Session["rollCount"] = rollCount;
    Session["runningTotal"] = runningTotal;
}
于 2012-10-30T04:43:25.013 に答える