Programs that are not text-based

The text-based program is most basic program. However, we always uses the graphic-based program, and text-based program is not too useful(sometimes useless).
Here are some example for these program which is non-text-based.
== Python TicTacToe ==
Note that the AI is too stupid.
import random
import tkinter as tk
from tkinter import messagebox
def draw_grid(canvas):
 # 画外边框线
 canvas.create_line(2, 2, 300, 2, width=2) # 上
 canvas.create_line(2, 2, 2, 300, width=2) # 左
 canvas.create_line(2, 300, 300, 300, width=2) # 下
 canvas.create_line(300, 2, 300, 300, width=2) # 右
 # 画横线
 canvas.create_line(100, 0, 100, 300)
 canvas.create_line(200, 0, 200, 300)
 # 画竖线
 canvas.create_line(0, 100, 300, 100)
 canvas.create_line(0, 200, 300, 200)
 num = 1
 for i in range(3):
 for j in range(3):
 y = i * 100 + 50
 x = j * 100 + 50
 canvas.create_text(x, y, text=str(num), font=("Arial", 24))
 num += 1
def on_click():
 global board
 global step
 position = e1.get()
 if position.isdigit() and 1 <= int(position) <= 9:
 number = int(position)
 index = number - 1
 if board[index] == ' ':
 board[index] = 'X'
 x = ((int(position) - 1) % 3) * 100 + 50
 y = ((int(position) - 1) // 3) * 100 + 50
 canvas.create_line(x - 20, y - 20, x + 20, y + 20, fill='black', width=2)
 canvas.create_line(x + 20, y - 20, x - 20, y + 20, fill='black', width=2)
 step += 1
 iswins()
 if not gameover:
 ai_move()
 else:
 messagebox.showerror("Error", "The tile has been dropped, please select an empty tile")
 
def ai_move():
 global board, foot
 index = random.randint(0, 8)
 while board[index] != ' ':
 index = random.randint(0, 8)
 x = ((index) % 3) * 100 + 50
 y = ((index) // 3) * 100 + 50
 canvas.create_oval(x - 20, y - 20, x + 20, y + 20, fill='red')
 board[index] = 'O'
 foot += 1
 iswins()
def problem():
 try:
 input_value = int(e1.get())
 if input_value < 1 or input_value > 9:
 messagebox.showerror("Error", "Please enter a number between 1 and 9")
 else:
 print("Valid input")
 except ValueError:
 messagebox.showerror("Error", "Please enter a valid number")
 on_click()
def iswins():
 global gameover,step
 wins = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]
 for w in wins:
 if (board[w[0]]!=" " and board[w[0]]==board[w[1]]==board[w[2]]):
 gameover = True
 messagebox.showinfo(title="Output",message="Winner is "+board[w[0]])
 return
 if step>5:
 gameover = True
 messagebox.showinfo(title="Output",message="It is draw")
 return
def again():
 global board, step, gameover
 board = [' '] * 9
 step = 0
 gameover = False
 canvas.delete('all')
 draw_grid(canvas)
def main():
 root = tk.Tk()
 root.title("Tic Tac Toe")
 root.geometry("500x600")
 lb1 = tk.Label(root, text='Input the piece that drop at where(1~9):')
 lb1.place(x=150, y=350)
 global e1
 e1 = tk.Entry(root, bd=5, width=20)
 e1.place(x=150, y=380)
 button1 = tk.Button(root, text="Press to drop", width=10, height=2, fg='black', command=problem)
 button1.place(x=180, y=420)
 button2 = tk.Button(root, text="Restart", width=10, height=2, fg='black', command=again)
 button2.place(x=180, y=480)
 global canvas
 canvas = tk.Canvas(root, width=350, height=350,)
 canvas.pack()
 draw_grid(canvas)
 root.mainloop()
if __name__ == "__main__":
 board = [' '] * 9
 gameover = False
 step = 0
 foot =0
 main()
== C++ Sandtrix ==
Download at here: https://www.luogu.com.cn/team/38157#file
Note that the website is in the Mainland of China. Find 新俄罗斯方块1.2.zip, Click the download sign, and then you can get the source code.
== Categories ==
Category:Program forms