// じゃんけん Class のテスト
// csc JyankenCls1.cs W_Sumaho.cs
using System;
using System.Drawing;
using System.Windows.Forms;
public class MyForm : Form
{
W_Class w_cls = new W_Class();
Bitmap score_img, gu_img, ti_img, pa_img;
Button button0, button1, button2, button3;
TextBox textBox1;
Random rand;
int red, white; //紅白の手
int r_score, w_score; //紅白の得点
int game_cnt; //ゲームカウント
int[] tbl= new int[3]; //対戦相手のグーチョキパー
// R_Class の領域
public MyForm()
{
InitializeComponent();
rand = new Random(); //時間に応じて決まるシード値で初期化
Paint += new PaintEventHandler(MyHandler);
try
{
score_img = new Bitmap("C:\\DATA\\Test\\score2.gif");
gu_img = new Bitmap("C:\\DATA\\Test\\jyanken0.gif");
ti_img = new Bitmap("C:\\DATA\\Test\\jyanken1.gif");
pa_img = new Bitmap("C:\\DATA\\Test\\jyanken2.gif");
}
catch
{
MessageBox.Show("画像ファイルが読めません!", "C:\\DATA\\Test\\");
return ;
}
r_score= 0;
w_score= 0;
for(int i=0; i<3; i++) tbl[i] = 0;
game_cnt= 1;
R_Init();
}
private void R_Init()
{
}
private void InitializeComponent()
{
// button0
button0 = new Button();
button0.Parent = this;
button0.Location = new System.Drawing.Point(20, 260);
button0.Text = "グー";
button0.Click += new System.EventHandler(this.button0_Click);
// button1
button1 = new Button();
button1.Location = new System.Drawing.Point(20, 290);
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);
// button3
button3 = new Button();
button3.Location = new System.Drawing.Point(20, 350);
button3.Text = "Think";
button3.Click += new System.EventHandler(this.button3_Click);
// textBox1
textBox1 = new System.Windows.Forms.TextBox();
textBox1.Location = new System.Drawing.Point(20, 390);
textBox1.Size = new System.Drawing.Size(360, 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.button3);
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_img, 20, 10);
switch(red)
{ case 0: g.DrawImage(gu_img, 100, 260);
break;
case 1: g.DrawImage(ti_img, 100, 260);
break;
case 2: g.DrawImage(pa_img, 100, 260);
break;
}
switch(white)
{ case 0: g.DrawImage(gu_img, 240, 260);
break;
case 1: g.DrawImage(ti_img, 240, 260);
break;
case 2: g.DrawImage(pa_img, 240, 260);
break;
}
}
private void button0_Click(object sender, EventArgs e)
{
red = 0;
white = w_cls.W_Think();
Judge(red, white);
R_Info(white, red);
w_cls.W_Info(red, white);
Invalidate();
}
private void button1_Click(object sender, EventArgs e)
{
red = 1;
white = w_cls.W_Think();
Judge(red, white);
R_Info(white, red);
w_cls.W_Info(red, white);
Invalidate();
}
private void button2_Click(object sender, EventArgs e)
{
red = 2;
white = w_cls.W_Think();
Judge(red, white);
R_Info(white, red);
w_cls.W_Info(red, white);
Invalidate();
}
private void button3_Click(object sender, EventArgs e)
{
red = R_Think();
white = w_cls.W_Think();
Judge(red, white);
R_Info(white, red);
w_cls.W_Info(red, white);
Invalidate();
}
// 紅の手を考える
private int R_Think()
{
return WeightRand(2, 20, 10);
}
// 紅の情報収集(you:対戦相手 my:自分側)
private void R_Info(int you, int my)
{
game_cnt++;
tbl[you]++;
Console.WriteLine("GameCount:{0} {1} {2} {3}",game_cnt,tbl[0],tbl[1],tbl[2]);
}
// グー・チョキ・パーをパラメータの確率で出す
public int WeightRand(int g, int c, int p)
{ int x = rand.Next(g+c+p);
if (x<g) return 0;
else if (x<g+c) return 1;
else return 2;
}
// 勝敗の判定と得点の計算
private void Judge(int red, int white)
{ string str= "";
int w;
w = ((red+3)-white)%3;
switch(w)
{ case 1:
str= "白の勝ちです ";
switch(white)
{ case 0: //グーで勝ち
w_score += 5;
break;
case 1: //チョキで勝ち
w_score += 2;
break;
case 2: //パーで勝ち
w_score += 15;
r_score -= 5;
break;
}
break;
case 2:
str= "赤の勝ちです ";
switch(red)
{ case 0: //グーで勝ち
r_score += 5;
break;
case 1: //チョキで勝ち
r_score += 2;
break;
case 2: //パーで勝ち
r_score += 15;
w_score -= 5;
break;
}
break;
default:
str= "あいこです ";
switch(white)
{ case 0: //グー
r_score += 3;
w_score += 3;
break;
case 1: //チョキ
r_score += 1;
w_score += 1;
break;
}
break;
}
str= str + "紅の得点:" + r_score.ToString() +
" 白の得点:" + w_score.ToString();
textBox1.Text = str;
}
}
class form03
{
public static void Main()
{
MyForm mf = new MyForm();
Application.Run(mf);
}
}
|