得点を計算

得点を計算して TextBox に印字します。
コンピュータは乱数で手を決めます。

得点を計算

  1. C:\Data\C#\Jyanken\ のフォルダーに Jyanken3.cs の名前で utf-8(BOM 有り)でタイプして格納して下さい。
    プログラムを起動して、ラジオボタンで「グー・チョキ・パー」を選択してプレイして下さい。
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyForm : Form
    {
        Bitmap  score, gu, chyoki, pa;
        Button  button0, button1, button2;
        TextBox textBox1;
        Random  rand;
        int     you, my;        //あなたと私の手
        int     y_c, m_c;       //あなたと私の得点
    
        public MyForm()
        {
            InitializeComponent();
            rand = new Random();    //時間に応じて決まるシード値で初期化
            Paint += new PaintEventHandler(MyHandler);
            try
            {
                score = new Bitmap("C:\\DATA\\Test\\score.gif");
                gu    = new Bitmap("C:\\DATA\\Test\\jyanken0.gif");
                chyoki= new Bitmap("C:\\DATA\\Test\\jyanken1.gif");
                pa    = new Bitmap("C:\\DATA\\Test\\jyanken2.gif");
            }
            catch
            {
                MessageBox.Show("画像ファイルが読めません!", "C:\\DATA\\Test\\");
                return ;
            }
            y_c= 0;
            m_c= 0;
        }
    
        private void InitializeComponent()
        {
            // button0
            button0 = new Button();
            button0.Parent = this;
            button0.Location = new System.Drawing.Point(20, 240);
            button0.Text = "グー";
            button0.Click += new System.EventHandler(this.button0_Click);
            // button1
            button1 = new Button();
            button1.Location = new System.Drawing.Point(20, 280);
            button1.Text = "チョキ";
            button1.Click += new System.EventHandler(this.button1_Click);
            // button2
            button2 = new Button();
            button2.Location = new System.Drawing.Point(20, 320);
            button2.Text = "パー";
            button2.Click += new System.EventHandler(this.button2_Click);
            // textBox1
            textBox1 = new System.Windows.Forms.TextBox();
            textBox1.Location = new System.Drawing.Point(20, 380);
            textBox1.Size = new System.Drawing.Size(300, 40);
    
            this.ClientSize = new System.Drawing.Size(400, 420);
            this.Controls.Add(this.button0);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.button2);
            this.Controls.Add(this.textBox1);
            this.Name = "MyForm";
            this.ResumeLayout(false);
            this.PerformLayout();
        }
    
        private void MyHandler(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.DrawImage(score, 20, 20);
            switch(you)
            {   case 0: g.DrawImage(gu, 110, 240);
                        break;
                case 1: g.DrawImage(chyoki, 110, 240);
                        break;
                case 2: g.DrawImage(pa, 110, 240);
                        break;
            }
            switch(my)
            {   case 0: g.DrawImage(gu, 240, 240);
                        break;
                case 1: g.DrawImage(chyoki, 240, 240);
                        break;
                case 2: g.DrawImage(pa, 240, 240);
                        break;
            }
        }
    
        private void button0_Click(object sender, EventArgs e)
        {
            you = 0;
            my = Think();
            Judge(you, my);
            Invalidate();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            you = 1;
            my = Think();
            Judge(you, my);
            Invalidate();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            you = 2;
            my = Think();
            Judge(you, my);
            Invalidate();
        }
        private int Think()
        {   return rand.Next(3);
        }
        // 勝敗の判定と得点の計算
        private void Judge(int you, int my)
        {   string  str= "";
            int w;
            w = ((you+3)-my)%3;
            switch(w)
            {   case 1:
                    str= "私の勝ちです    ";
                    switch(my)
                    {   case 0: //グーで勝ち
                            m_c += 5;
                            break;
                        case 1: //チョキで勝ち
                            m_c += 2;
                            break;
                        case 2: //パーで勝ち
                            m_c += 15;
                            y_c -= 5;
                            break;
                    }
                    break;
                case 2:
                    str= "あなたの勝ちです    ";
                    switch(you)
                    {   case 0: //グーで勝ち
                            y_c += 5;
                            break;
                        case 1: //チョキで勝ち
                            y_c += 2;
                            break;
                        case 2: //パーで勝ち
                            y_c += 15;
                            m_c -= 5;
                            break;
                    }
                    break;    
                default:    
                    str= "あいこです    ";
                    switch(my)
                    {   case 0: //グー
                            y_c += 3;
                            m_c += 3;
                            break;
                        case 1: //チョキ
                            y_c += 1;
                            m_c += 1;
                            break;
                    }
                    break;
            }
            str= str + "あなたの得点:" + y_c.ToString() + "    わたしの得点:" + m_c.ToString();
            textBox1.Text = str;
        }
    }
    
    class form03
    {
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    
  2. スタートメニューから[すべてのプログラム][Visual C++ 2005 Express Edition][Visual Studio Tools] [Visual Studio 2005 コマンド プロンプト] から起動します。
    C:\Data\C#\Jyanken のフォルダーに移動して、直接 csc コマンドを叩きます。
    コンパイルが終われば Jyanken3.exe を実行して下さい。
    >CD C:\Data\C#\Jyanken
    >CSC Jyanken3.cs
    >Jyanken3.exe          
    
  3. 勝敗表に基づいて得点を計算して Text Box に表示します。
    得点を表示する TextBox を Form に配置します。
        TextBox textBox1;
            // textBox1
            textBox1 = new System.Windows.Forms.TextBox();
            textBox1.Location = new System.Drawing.Point(20, 380);
            textBox1.Size = new System.Drawing.Size(300, 40);
    
            this.Controls.Add(this.textBox1);
    
  4. プレイヤーの手はラジオボタンで選択します。
    コンピュータの手は、現在のところ Think() 関数で乱数で決定します。
        private void button0_Click(object sender, EventArgs e)
        {
            you = 0;
            my = Think();
            Judge(you, my);
            Invalidate();
        }
    
        private int Think()
        {   return rand.Next(3);
        }
    
  5. 勝敗を判定して得点を計算します。
    str が TextBox に表示するメッセージです。
        // 勝敗の判定と得点の計算
        private void Judge(int you, int my)
        {   string  str= "";
            int w;
            w = ((you+3)-my)%3;
            switch(w)
            {   case 1:
                    str= "私の勝ちです    ";
                    switch(my)
                    {   case 0: //グーで勝ち
                            m_c += 5;
                            break;
                        case 1: //チョキで勝ち
                            m_c += 2;
                            break;
                        case 2: //パーで勝ち
                            m_c += 15;
                            y_c -= 5;
                            break;
                    }
                    break;
                case 2:
                    str= "あなたの勝ちです    ";
                    switch(you)
                    {   case 0: //グーで勝ち
                            y_c += 5;
                            break;
                        case 1: //チョキで勝ち
                            y_c += 2;
                            break;
                        case 2: //パーで勝ち
                            y_c += 15;
                            m_c -= 5;
                            break;
                    }
                    break;    
                default:    
                    str= "あいこです    ";
                    switch(my)
                    {   case 0: //グー
                            y_c += 3;
                            m_c += 3;
                            break;
                        case 1: //チョキ
                            y_c += 1;
                            m_c += 1;
                            break;
                    }
                    break;
            }
            str= str + "あなたの得点:" + y_c.ToString() + "    わたしの得点:" + m_c.ToString();
            textBox1.Text = str;
        }
    

[Next Chapter ↓] じゃんけんゲームの完成
[Previous Chapter ↑] グー・チョキ・パーを選択

超初心者のプログラム入門(C#)