三目並べもつくったぞー
やあ、いつもと変わらぬ顔が見れてうれしいよ。
なんて、キザっぽくいってみたよ。
これが気障と感じるかどうかは人によるだろうけどね。
まあ、それは置いておいて今日は久しぶりにプログラミングのことを話そう。
はい、久しぶりに、というかまだ二回目ですが、
昨日、即興三目並べを数時間くらいで作りました。
即興で作ったので細かなミスはご容赦を。
ちなみにコメント等の助言は一切書いていないので、参考にはならないです。
最近は専ら検算と数値解析にしかpythonを使っていませんし、
それに加えてCを動かすことが増え、pythonを使っていなかったなと思い至ったので作りました。
ちなみに三目並べを作るというアイデアは、京大が公開している資料からきてます。
初学者が入るにはいいテキストだと思います。
(ちなみに僕はこれでtkinterを学びました)
あと、googleで三目並べと調べると、三目並べで遊べるので
普通に遊ぶ際はそちらでプレイすることをお勧めします。
import tkinter as tk
OPEN = 0
FIRST = 1
SECOND = -1
turn = FIRST
Board = [[0,0,0],[0,0,0],[0,0,0]]
count = 0
def put(m,n):
global turn, count,b,Board
Board[m][n] = turn
if turn == FIRST:
b[3*m+n].configure(text='O')
l.delete(0,tk.END)
l.insert(0,"Turn: X")
else:
b[3*m+n].configure(text='X')
l.delete(0,tk.END)
l.insert(0,"Turn: O")
b[3*m+n].configure(state=tk.DISABLED)
count += 1
def check():
global turn
i = 2
global count
checklist = [Board[0],Board[1],Board[2],[Board[0][0],Board[1][0],Board[2][0]],[Board[0][1],Board[1][1],Board[2][1]],
[Board[0][2],Board[1][2],Board[2][2]],[Board[0][0],Board[1][1],Board[2][2]],[Board[0][2],Board[1][1],Board[2][0]]]
for j in range(8):
if abs(sum(checklist[j]))==3:
return turn
if count == 9 :
return 0
turn *= -1
return i
def puton(m,n):
global Board
put(m,n)
if check()==FIRST:
l.delete(0,tk.END)
l.insert(0,"First is Win!!")
for i in b:
i.configure(state=tk.DISABLED)
elif check()==SECOND:
l.delete(0,tk.END)
l.insert(0,"Second is Win!!")
#SECONDWIN
for i in b:
i.configure(state=tk.DISABLED)
elif check()==0:
l.delete(0,tk.END)
l.insert(0,"No Winner")
for i in b:
i.configure(state=tk.DISABLED)
root = tk.Tk()
f = tk.Frame(root)
f.grid()
l = tk.Entry(root,font=('Helvetica,14'))
l.grid(row=0, column=0, columnspan=3)
l.insert(0,"Turn:O")
#
class Mybutton(tk.Button):
__num = 0
def __init__(self, master=None, cnf={}, **kw):
tk.Button.__init__(self, master=None, cnf={}, **kw)
self.number=Mybutton.__num
self['text']=''
self['command']=lambda:puton(self.number//3,self.number%3)
self['width']=5
self['font']=('Helvetica,14')
self.grid( row= self.number//3+1 ,column= self.number % 3,sticky=tk.W)
Mybutton.__num += 1
b=[]
for k in ['b1','b2','b3','b4','b5','b6','b7','b8','b9']:
k = Mybutton(f)
b.append(k)
root.mainloop()
ようし、今日はこのくらいで終わるか。
また、明日も逢えたらいいね。
それじゃあ、またね
投げるな危険