Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
129
Task/Tic-tac-toe/Ring/tic-tac-toe.ring
Normal file
129
Task/Tic-tac-toe/Ring/tic-tac-toe.ring
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
Load "guilib.ring"
|
||||
|
||||
#Provide a list to save each button status in numeric readable format
|
||||
#0=nothing 1=X 2=O
|
||||
lst=[]
|
||||
|
||||
#Provide onScreen button status and style
|
||||
btns=[]
|
||||
|
||||
#Define who has the turn
|
||||
isXTurn=true
|
||||
|
||||
|
||||
app=new qApp
|
||||
{
|
||||
|
||||
frmMain=new qMainWindow()
|
||||
{
|
||||
setWindowTitle("TicTacToe!")
|
||||
resize(300,320)
|
||||
move(200,200)
|
||||
//buttons
|
||||
pos=0
|
||||
for y=0 to 2
|
||||
for x=0 to 2
|
||||
//Creating Buttons on the screen
|
||||
pos++
|
||||
Add(lst,0)
|
||||
Add(btns,new qPushButton(frmMain)
|
||||
{
|
||||
setGeometry(x*100,y*100,100,100)
|
||||
setText("-")
|
||||
setclickevent("Disp(" + pos +")")
|
||||
setstylesheet("font-size:24pt ; font: bold ; color:yellow ; background-color: green")
|
||||
})
|
||||
next
|
||||
next
|
||||
//StatusBar
|
||||
status=new qStatusBar(frmMain)
|
||||
{
|
||||
showMessage("Ready",0)
|
||||
}
|
||||
setwindowflags(Qt_dialog)
|
||||
setStatusbar(status)
|
||||
show()
|
||||
}
|
||||
exec()
|
||||
}
|
||||
|
||||
//Restart the game by re init buttons status
|
||||
func reStart
|
||||
for i=1 to 9
|
||||
lst[i]=0
|
||||
btns[i].setText("-")
|
||||
next
|
||||
isXTurn=true
|
||||
|
||||
func Disp x
|
||||
if isXTurn=true and lst[x]=0
|
||||
btns[x].setText("X")
|
||||
lst[x]=1
|
||||
isXTurn=false
|
||||
but isXTurn=false and lst[x]=0
|
||||
btns[x].setText("O")
|
||||
lst[x]=2
|
||||
isXTurn=true
|
||||
ok
|
||||
|
||||
winner = CheckWinner()
|
||||
#if there is no Winner and still there is ability to winner
|
||||
#continue playing.
|
||||
if winner<1 return ok
|
||||
|
||||
//Who is the winner!
|
||||
switch winner
|
||||
on 1
|
||||
new qMessagebox(frmMain)
|
||||
{
|
||||
SetWindowTitle("We have a winner!")
|
||||
SetText("Good job X you won!")
|
||||
show()
|
||||
}
|
||||
on 2
|
||||
new qMessagebox(frmMain)
|
||||
{
|
||||
SetWindowTitle("We have a winner!")
|
||||
SetText("Good job O you won!")
|
||||
show()
|
||||
}
|
||||
on 3
|
||||
new qMessagebox(frmMain)
|
||||
{
|
||||
SetWindowTitle("Oh no it's a tie")
|
||||
SetText("Oh no it's a tie!")
|
||||
show()
|
||||
}
|
||||
off
|
||||
reStart()
|
||||
|
||||
func CheckWinner
|
||||
//vertical check
|
||||
for v=1 to 9 step 3
|
||||
if lst[v]!=0 and lst[v+1]!=0 and lst[v+2]!=0
|
||||
if lst[v]=lst[v+1] and lst[v+1]=lst[v+2]
|
||||
return lst[v]
|
||||
ok
|
||||
ok
|
||||
next
|
||||
//horzintal
|
||||
for h=1 to 3
|
||||
if lst[h]!=0 and lst[h+3]!=0 and lst[h+6]!=0
|
||||
if lst[h]=lst[h+3] and lst[h+3]=lst[h+6]
|
||||
return lst[h]
|
||||
ok
|
||||
ok
|
||||
next
|
||||
//Cross
|
||||
if lst[1]!=0 and lst[5]!=0 and lst[9]!=0
|
||||
if lst[1]=lst[5] and lst[5]=lst[9] return lst[1] ok
|
||||
ok
|
||||
if lst[3]!=0 and lst[5]!=0 and lst[7]!=0
|
||||
if lst[3]=lst[5] and lst[5]=lst[7] return lst[3] ok
|
||||
ok
|
||||
//tie
|
||||
tie=true
|
||||
for i=1 to 9
|
||||
if lst[i]=0 tie=false exit ok
|
||||
next
|
||||
if tie=true return 3 ok return 0
|
||||
Loading…
Add table
Add a link
Reference in a new issue