well I am making a tic tac toe game using c# and gdi+.I want to implement a very simple AI using random numbers to draw "O"'s on the screen.here is the code I am working on.
[source lang = "c#"]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]private[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]void[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] Computer_Move_Click([/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]object[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] sender, [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]EventArgs[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] e)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Graphics[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] g = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]this[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].CreateGraphics();[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Random[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] random = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Random[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]();[/font][/font]
[font="Consolas"][size="2"][color="#008000"][font="Consolas"][size="2"][color="#008000"][font="Consolas"][size="2"][color="#008000"]//int pX = 15;[/font][/font][/font]
[font="Consolas"][size="2"][color="#008000"][font="Consolas"][size="2"][color="#008000"][font="Consolas"][size="2"][color="#008000"]//int pY = 105;[/font][/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]int[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] pX = random.Next(0, 200);[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]int[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] pY = random.Next(0, 200);[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] square_one = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](10,20,30,40);[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] square_two = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](80, 90, 30, 40);[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] square_three = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](160, 170, 30, 40);[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] square_four = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](10, 20, 100, 110);[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] square_five = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](80, 90, 100, 110);[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] square_six = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](160, 170, 100, 110);[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] square_seven = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](10, 20, 160, 170);[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] square_eight = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](80, 90, 160, 170);[/font][/font]
[font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] square_nine = [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Rectangle[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](160, 170, 160, 170);[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]while[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX == 15 || pX == 85 || pX == 165 || pY == 35 || pY == 105 || pY == 165)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]if[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX >= square_one.X && pX <= square_one.Y && pY >= square_one.Width && pY <= square_one.Height)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.DrawString([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"O"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Font[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"Verdana"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], 20), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]SolidBrush[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Color[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].Green), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Point[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](pX, pY));[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]if[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX >= square_two.X && pX <= square_two.Y && pY >= square_two.Width && pY <= square_two.Height)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.DrawString([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"O"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Font[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"Verdana"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], 20), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]SolidBrush[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Color[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].Green), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Point[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](pX, pY));[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]if[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX >= square_three.X && pX <= square_three.Y && pY >= square_three.Width && pY <= square_three.Height)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.DrawString([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"O"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Font[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"Verdana"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], 20), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]SolidBrush[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Color[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].Green), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Point[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](pX, pY));[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]if[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX >= square_four.X && pX <= square_four.Y && pY >= square_four.Width && pY <= square_four.Height)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.DrawString([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"O"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Font[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"Verdana"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], 20), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]SolidBrush[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Color[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].Green), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Point[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](pX, pY));[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]if[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX >= square_five.X && pX <= square_five.Y && pY >= square_five.Width && pY <= square_five.Height)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.DrawString([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"O"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Font[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"Verdana"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], 20), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]SolidBrush[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Color[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].Green), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Point[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](pX, pY));[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]if[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX >= square_six.X && pX <= square_six.Y && pY >= square_six.Width && pY <= square_six.Height)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.DrawString([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"O"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Font[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"Verdana"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], 20), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]SolidBrush[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Color[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].Green), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Point[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](pX, pY));[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]if[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX >= square_seven.X && pX <= square_seven.Y && pY >= square_seven.Width && pY <= square_seven.Height)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.DrawString([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"O"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Font[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"Verdana"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], 20), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]SolidBrush[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Color[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].Green), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Point[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](pX, pY));[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]if[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX >= square_eight.X && pX <= square_eight.Y && pY >= square_eight.Width && pY <= square_eight.Height)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.DrawString([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"O"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Font[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"Verdana"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], 20), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]SolidBrush[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Color[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].Green), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Point[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](pX, pY));[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]if[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] (pX >= square_nine.X && pX <= square_nine.Y && pY >= square_nine.Width && pY <= square_nine.Height)[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]{[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.DrawString([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"O"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Font[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"][font="Consolas"][size="2"][color="#a31515"]"Verdana"[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"], 20), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]SolidBrush[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"]([/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Color[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"].Green), [/font][/font][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]new[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"] [/font][/font][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"][font="Consolas"][size="2"][color="#2b91af"]Point[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"](pX, pY));[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"][font="Consolas"][size="2"][color="#0000ff"]break[/font][/font][/font][font="Consolas"][size="2"][font="Consolas"][size="2"];[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]g.Dispose();[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"]}[/font][/font]
[font="Consolas"][size="2"][font="Consolas"][size="2"][/source][/font][/font]
tic tac toe ai
well I am making a tic tac toe game using c# and gdi+.I want to implement a very simple AI using random numbers to draw "O"'s on the screen.here is the code I am working on.
Sounds great. And your question is...
FYI, when you want to copy 'n' paste code, first paste it into notepad, then copy it from notepad into GameDev's post editor. That way it'll remove the formatting and GameDev won't mangle your code like it is right now. For the rest of the world, here's what I could salvage from the code:
private void Computer_Move_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
Random random = new Random();
//int pX = 15;
//int pY = 105;
int pX = random.Next(0, 200);
int pY = random.Next(0, 200);
Rectangle square_one = new Rectangle(10,20,30,40);
Rectangle square_two = new Rectangle(80, 90, 30, 40);
Rectangle square_three = new Rectangle(160, 170, 30, 40);
Rectangle square_four = new Rectangle(10, 20, 100, 110);
Rectangle square_five = new Rectangle(80, 90, 100, 110);
Rectangle square_six = new Rectangle(160, 170, 100, 110);
Rectangle square_seven = new Rectangle(10, 20, 160, 170);
Rectangle square_eight = new Rectangle(80, 90, 160, 170);
Rectangle square_nine = new Rectangle(160, 170, 160, 170);
while (pX == 15 || pX == 85 || pX == 165 || pY == 35 || pY == 105 || pY == 165)
{
if (pX >= square_one.X && pX <= square_one.Y && pY >= square_one.Width && pY <= square_one.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
if (pX >= square_two.X && pX <= square_two.Y && pY >= square_two.Width && pY <= square_two.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
if (pX >= square_three.X && pX <= square_three.Y && pY >= square_three.Width && pY <= square_three.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
if (pX >= square_four.X && pX <= square_four.Y && pY >= square_four.Width && pY <= square_four.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
if (pX >= square_five.X && pX <= square_five.Y && pY >= square_five.Width && pY <= square_five.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
if (pX >= square_six.X && pX <= square_six.Y && pY >= square_six.Width && pY <= square_six.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
if (pX >= square_seven.X && pX <= square_seven.Y && pY >= square_seven.Width && pY <= square_seven.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
if (pX >= square_eight.X && pX <= square_eight.Y && pY >= square_eight.Width && pY <= square_eight.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
if (pX >= square_nine.X && pX <= square_nine.Y && pY >= square_nine.Width && pY <= square_nine.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
break;
}
g.Dispose();
}
}
}
Just a suggestion on simplifying your code: make an array of rectangles, and then iterate through each rectangle and perform the test. Something like this (note that this code is untested, but hopefully it gives you an idea of how to simplify things):
private void Computer_Move_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
Random random = new Random();
//int pX = 15;
//int pY = 105;
int pX = random.Next(0, 200);
int pY = random.Next(0, 200);
Rectangle[] squares = new Rectangle[9];
squares[0] = new Rectangle(10,20,30,40);
squares[1] = new Rectangle(80, 90, 30, 40);
squares[2] = new Rectangle(160, 170, 30, 40);
squares[3] = new Rectangle(10, 20, 100, 110);
squares[4] = new Rectangle(80, 90, 100, 110);
squares[5] = new Rectangle(160, 170, 100, 110);
squares[6] = new Rectangle(10, 20, 160, 170);
squares[7] = new Rectangle(80, 90, 160, 170);
squares[8] = new Rectangle(160, 170, 160, 170);
while (pX == 15 || pX == 85 || pX == 165 || pY == 35 || pY == 105 || pY == 165)
{
for (int i = 0; i < squares.Length; ++i)
{
if (pX >= squares.X && pX <= squares.Y && pY >= squares.Width && pY <= squares.Height)
{
g.DrawString("O", new Font("Verdana", 20), new SolidBrush(Color.Green), new Point(pX, pY));
}
}
break; // Also, why do you have this break here???
}
g.Dispose();
}
}
}
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]
thanks corn,sorry about the mangled code.well my question is how do I go about tackling an AI problem.all I want to do is to get the computer to draw an "O" in the appropriate every time I click a button on the form.this is the first game in which I have tried to involve some AI to.go easy on me its my first time.I am learning alot about c# and gdi+ by doing this project.
thanks corn,sorry about the mangled code.well my question is how do I go about tackling an AI problem.all I want to do is to get the computer to draw an "O" in the appropriate every time I click a button on the form.this is the first game in which I have tried to involve some AI to.go easy on me its my first time.I am learning alot about c# and gdi+ by doing this project.
Wikipedia has a nice article about the strategy behind Tic-tac-toe. The strategy would be fairly simple to implement in code (I know you're just beginning so you'll probably have questions, which is fine, but give it a try first).
Personal nitpick that makes reading your posts easier: put a space after ',' and '.' and capitalize the first letter after '.' like in my posts. I also made a quick edit to my post about simplifying your code. You may have seen it, but I think I made the changes just after your second post.
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]
well corn I have done what you said and my code went from 4 pages to 2 pages. EXCELLENT,thanks for all the help.
Back in College here's how I solved the problem:
T3 has 3 rows, 3 columns and 2 diagonals. I called these 8 things a Set.
Assume I'm playing X. Negotiate the sets in this order
If any Set has X X - (In any order) then play my X in the blank to win
If any Set has O O - (in any order) then play an X in the blank to block
If any set contains X - - (in any order) then see if either of the blanks intersects with another set with the value X - - and play there. Otherwhise, play on a random blank.
If any set contains O - - (in any order) then see if either of the blanks intersects with another set with the value O - - and play there. Otherwhise, play on a random blank.
Find a set with - - - and play any blank.
If the only move left is in a set with X O - then the game is tied.
This simple AI will play an almost perfect game. To make it perfect you simply add some code to pick the best first move. Once that's done this system will find the best next move.
T3 has 3 rows, 3 columns and 2 diagonals. I called these 8 things a Set.
Assume I'm playing X. Negotiate the sets in this order
If any Set has X X - (In any order) then play my X in the blank to win
If any Set has O O - (in any order) then play an X in the blank to block
If any set contains X - - (in any order) then see if either of the blanks intersects with another set with the value X - - and play there. Otherwhise, play on a random blank.
If any set contains O - - (in any order) then see if either of the blanks intersects with another set with the value O - - and play there. Otherwhise, play on a random blank.
Find a set with - - - and play any blank.
If the only move left is in a set with X O - then the game is tied.
This simple AI will play an almost perfect game. To make it perfect you simply add some code to pick the best first move. Once that's done this system will find the best next move.
It's more instructive to write an AI that figures out what to play by itself. You can use on of these:
* Minimax
* Monte Carlo Tree Search
* Retrograde analysis
* Minimax
* Monte Carlo Tree Search
* Retrograde analysis
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement