Skip to main content

TIC TAC TOE GAME - Simulation of 2 Players

#!/usr/bin/python

import random

# TIC- TAC TOE GAME Simulation (2 Player , Random Positions)
# X | O | X
# ----------
# X | O | X
# ----------
# O | X | X

def fill_tic_tac():
#remove from the position list since this position is occupied
#randomly select player and position mark on the matrix
position = [0,1,2,3,4,5,6,7,8]
box = [0]*(9)
flag = True
#Marking the Box
for i in range(9):
#Select Random Position in Matrix
pos = random.choice(position)
#Delete the position from original position
position.remove(pos)
#Select the Random player and Insert Player 1 -> 'X' ,Player 2 -> 'O'
pl = random.randint(1,2)
if(pl == 1):
box[pos] = 'X'
#Check_Winner here
if(check_winner(box,'X')):
flag = False
print("*** Player 1 - X Is Winner *** ")
break
else:
box[pos] = 'Y'
#Check Winner Here
if(check_winner(box,'Y')):
flag = False
print("*** Player 2 - Y Is Winner *** ")
break
print_tic_tac(box)
if(flag):
print("Game Was Draw !!")

def print_tic_tac(box):
for i in range(9):
print(box[i]),
if ((i+1) % 3 == 0):
print("")
print("---------")

def check_winner(box,le):
return ((box[0] == le and box[1] == le and box[2] == le) or 
(box[3] == le and box[4] == le and box[5] == le) or 
(box[6] == le and box[7] == le and box[8] == le) or #
(box[0] == le and box[3] == le and box[6] == le) or 
(box[1] == le and box[4] == le and box[7] == le) or 
(box[2] == le and box[5] == le and box[8] == le) or 
(box[0] == le and box[4] == le and box[8] == le) or 
(box[2] == le and box[5] == le and box[8] == le)) #Diagonal

if __name__ == '__main__':

fill_tic_tac()


Output

suri@suri-Aspire-R3-471T:~/Python_Programs$ python Tic_Tac_Toe.py 
*** Player 1 - X Is Winner *** 
X X X 
---------
0 0 X 
---------
0 0 0 
---------
suri@suri-Aspire-R3-471T:~/Python_Programs$ python Tic_Tac_Toe.py 
*** Player 2 - Y Is Winner *** 
Y 0 0 
---------
0 X Y 
---------
Y Y Y 
---------
suri@suri-Aspire-R3-471T:~/Python_Programs$ python Tic_Tac_Toe.py 
*** Player 1 - X Is Winner *** 
X Y X 
---------
X X X 
---------
X X Y 
---------

Comments

Popular posts from this blog

Sampling and FFT Size derivation in LTE

Sampling and FFT Size derivation in LTE Ts = 1 / (15000 x 2048) seconds, which corresponds to the 30.72 MHz sample clock for the 2048 point FFT used with the 20 MHz system bandwidth. In the frequency domain, the number of sub-carriers N ranges from 128 to 2048, depending on channel bandwidth with 512 and 1024 for 5 and 10 MHz, respectively, being most commonly used in practice. The sub-carrier spacing is ∆f = 1/T u = 15 kHz. The sampling rate is fs = ∆f · N = 15000 N. This results in a sampling rate that’s multiple or sub-multiple of the WCDMA chip rate of 3.84 Mcps: LTE parameters have been chosen such that FFT lengths and sampling rates are easily obtained for all operation modes while at the same time ensuring the easy implementation of dual-mode devices with a common clock reference. Sampling frequency is Multiple's of 2, For 15 Mhz Bandwidth - Sampling Frequency = 23.04 (6 * 3.84). FFT SIZE = S

C Programming Questions – Part 1

1. W hat do curly braces denote in C? Why does it make sense to use curly brac es to surround the body of a function?   Answer: The curly braces denote a block of code, in which variables can be declared. Variables declared within the block are valid only until the end of the block, marked by the matching right curly brace ’}’. The body of a function is one such type of block, and thus, curly braces are used to describe the extent of that block . 2.Describe the difference between the literal values 7, "7", and ’7 ’ ?   Answer: The first literal is integer 7.Second literal is null terminated string value '7'.Third literal is character '7' having ASCII character code (55). 3. Consider the statement double ans = 10.0+2.0/3.0−2.0∗2.0; Rewrite this statement, inserting parentheses to ensure that ans = 11.0 upon evaluation of this statement ? Answer: double ans = 10.0+2.0/ (( 3.0−2.0 ) ∗2.0 ) ; 4 .C

C Programming Questions - Part 2

1) How do you determine the size and range of the following data types ? char unsigned char short int unsigned int unsigned long float Ans:- limits.h header file defines the minimum and maximum range macros for each of the data types , sizeof(datatype) returns the number of bytes used by the datatype in current machine. 2) Write logical expressions that tests whether a given character variable c is lowercase letter uppercase letter digit white space(includes space,tab,newline) Ans:- lowercase letter = (c >= 'a' && c <= 'z') uppercase letter = (c >= 'A' && c <= 'Z') digit = (c >= '0' && c <= '9') white space(includes space,tab,newline) = (c == ' ' || c == '\t' || c == '\n') 3) Consider unsigned int val=0xCAFE; Write expressio