摘要:我的猜數字程式AI遊戲程式碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace MANB { public partial class Form1 : Form { public List<NumberList> list = new List<NumberList>(); public class NumberList { public int[] Number = new int[3]; public NumberList() { Number[0] = 0; Number[1] = 0; Number[2] = 0; } public NumberList(int num1, int num2, int num3) { Number[0] = num1; Number[1] = num2; Number[2] = num3; } public void setNumber(int number,int d) { Number[d] = number; } public int getNumber(int d) { return Number[d]; } public string NumberString() { return String.Format("{0}{1}{2}", Number[0], Number[1], Number[2]); } public bool NumberCampre(NumberList NL ,int A ,int B) { int intA, intB; intA = 0; intB = 0; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) if (NL.getNumber(i)== this.getNumber(j)) if (i == j) intA++; else intB++; if (intA == A && intB == B) return true; else return false; } } public Form1() { InitializeComponent(); Submit.Enabled = false; } private void Start_Click(object sender, EventArgs e) { list.Clear(); int[] numflag = new int[10]; for (int i = 0; i < 10; i++) numflag[i] = 0; SetNumberList(numflag,0,0,3); NumberList NL = list[0]; L1.Text = NL.getNumber(0).ToString(); L2.Text = NL.getNumber(1).ToString(); L3.Text = NL.getNumber(2).ToString(); listBox1.Items.Clear(); Start.Enabled = false; Submit.Enabled = true; } public void SetNumberList(int[] numflag,int num, int level,int level2) { if (level == 0)/* start */ { level++; for (int i = 0; i < 10; i++) { SetNumberList(numflag, i, level,level2); } } else if (level == level2) { numflag[num] = level; PushNumberList(numflag); numflag[num] = 0; }else{ numflag[num] = level; level++; for (int i = 0; i < 10; i++) { if (numflag[i] == 0) SetNumberList(numflag, i, level,level2); } numflag[num] = 0; } } public void PushNumberList(int[] numflag) { NumberList NL = new NumberList(); for (int i = 0; i < 10; i++) { if (numflag[i] != 0) NL.setNumber(i, numflag[i] - 1); } list.Add(NL); } private void textBox1_TextChanged(object sender, EventArgs e) { } private void Submit_Click(object sender, EventArgs e) { int intA,intB; if (T1.Text == "") T1.Text = "0"; if (T2.Text == "") T2.Text = "0"; intA = int.Parse(T1.Text); intB = int.Parse(T2.Text); List<NumberList> list2 = new List<NumberList>(); NumberList objNL = new NumberList(int.Parse(L1.Text), int.Parse(L2.Text), int.Parse(L3.Text)); listBox1.Items.Add(objNL.NumberString() + " " + intA.ToString() + "A" + intB.ToString() + "B"); if (intA == 3) { listBox1.Items.Add("Game Over"); Start.Enabled = true; Submit.Enabled = false; return; } foreach (NumberList NL in list) { if (objNL.NumberCampre(NL, intA, intB)) list2.Add(NL); } list.Clear(); list = list2; if (list.Count == 0) { listBox1.Items.Add("Game Over Your Number is not exist"); Start.Enabled = true; Submit.Enabled = false; return ; } NumberList objNewNL = list[0]; L1.Text = objNewNL.getNumber(0).ToString(); L2.Text = objNewNL.getNumber(1).ToString(); L3.Text = objNewNL.getNumber(2).ToString(); } } }