Tic-tac-toe
Sunday, September 20, 2015
Saturday, September 5, 2015
Pseudocode
import random
def drawBoard(board):print(' | |')print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])print(' | |')print('-----------')print(' | |')print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])print(' | |')print('-----------')print(' | |')print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])print(' | |')def inputPlayerLetter():letter = ''while not (letter == 'X' or letter == 'O'):print('Do you want to be X or O?')letter = input().upper()if letter == 'X':return ['X', 'O']else:return ['O', 'X']def whoGoesFirst():if random.randint(0, 1) == 0:return 'computer'else:return 'player'def playAgain():print('Do you want to play again? (yes or no)')return input().lower().startswith('y')def makeMove(board, letter, move):board[move] = letterdef isWinner(bo, le):return ((bo[7] == le and bo[8] == le and bo[9] == le) or # across the top(bo[4] == le and bo[5] == le and bo[6] == le) or # across the middle(bo[1] == le and bo[2] == le and bo[3] == le) or # across the bottom(bo[7] == le and bo[4] == le and bo[1] == le) or # down the left side(bo[8] == le and bo[5] == le and bo[2] == le) or # down the middle(bo[9] == le and bo[6] == le and bo[3] == le) or # down the right side(bo[7] == le and bo[5] == le and bo[3] == le) or # diagonal(bo[9] == le and bo[5] == le and bo[1] == le)) # diagonaldef getBoardCopy(board):dupeBoard = []for i in board:dupeBoard.append(i)return dupeBoarddef isSpaceFree(board, move):return board[move] == ' 'def getPlayerMove(board):move = ' 'while move not in '1 2 3 4 5 6 7 8 9'.split() or not isSpaceFree(board, int(move)):print('What is your next move? (1-9)')move = input()return int(move)def chooseRandomMoveFromList(board, movesList):possibleMoves = []for i in movesList:if isSpaceFree(board, i):possibleMoves.append(i)if len(possibleMoves) != 0:return random.choice(possibleMoves)else:return Nonedef getComputerMove(board, computerLetter):if computerLetter == 'X':playerLetter = 'O'else:playerLetter = 'X'for i in range(1, 10):copy = getBoardCopy(board)if isSpaceFree(copy, i):makeMove(copy, computerLetter, i)if isWinner(copy, computerLetter):return ifor i in range(1, 10):copy = getBoardCopy(board)if isSpaceFree(copy, i):makeMove(copy, playerLetter, i)if isWinner(copy, playerLetter):return imove = chooseRandomMoveFromList(board, [1, 3, 7, 9])if move != None:return moveif isSpaceFree(board, 5):return 5return chooseRandomMoveFromList(board, [2, 4, 6, 8])def isBoardFull(board):for i in range(1, 10):if isSpaceFree(board, i):return Falsereturn Trueprint('Welcome to Tic Tac Toe!')while True:theBoard = [' '] * 10playerLetter, computerLetter = inputPlayerLetter()turn = whoGoesFirst()print('The ' + turn + ' will go first.')gameIsPlaying = Truewhile gameIsPlaying:if turn == 'player':drawBoard(theBoard)move = getPlayerMove(theBoard)makeMove(theBoard, playerLetter, move)if isWinner(theBoard, playerLetter):drawBoard(theBoard)print('Hooray! You have won the game!')gameIsPlaying = Falseelse:if isBoardFull(theBoard):drawBoard(theBoard)print('The game is a tie!')breakelse:turn = 'computer'else:move = getComputerMove(theBoard, computerLetter)makeMove(theBoard, computerLetter, move)if isWinner(theBoard, computerLetter):drawBoard(theBoard)print('The computer has beaten you! You lose.')gameIsPlaying = Falseelse:if isBoardFull(theBoard):drawBoard(theBoard)print('The game is a tie!')breakelse:turn = 'playerif not playAgain():break
Reference
- "tic-tac-toe." Oxford Dictionary of Rhymes. 2007. Retrieved September 05, 2015 from Encyclopedia.com: http://www.encyclopedia.com/doc/1O233-tictactoe.html
Literature review
1.Exploring the Possibilities of Using Tic-Tac-Toe to Think and Communicate about Mathematics (Australian Mathematics Teacher,2008)
Doing mathematics, and thinking about how you are doing it at the same time, are not the easiest things to do. It is even more difficult if students are not aware that they should be attempting both processes at the same time. They are likely to concentrate on the immediate task of "doing" the mathematics, rather than trying to access the deeper process. Yet it is this deeper process that is really at the heart of mathematics. In turn, accessing this deeper process requires in part some command of the appropriate rational/logical language so communication with yourself and others can proceed effectively and efficiently. This article discusses the possibilities of using students' explorations of the traditional strategy game "tic-tac-toe," and some extensions, to set up situations for students to discuss and examine this process.
2.Tic-Tac-Toe Played as a Word Game (Word Ways,2010)
2.Tic-Tac-Toe Played as a Word Game (Word Ways,2010)
In Problem 48 in Your Move (McGraw-Hill, 1971), David Silverman described a linguistic version of tic-tac-toe consisting of a stockpile of the words ARMY, CHAT, FISH, GIRL, HORN, KNIT, SOUP, SWAN and VOTE. Players alternately select words, and the first to collect three words sharing a common letter is the winner.
In the single-letter analogue of Silverman's game, players draw alternately from a stockpile of nine different letters; the first to select the letters forming one of a specified list of nine words is the winner. To make it easy to remember these words, they can be written in the form of a 3-by-3 word square in which both diagonals are also words.
Squares are easy to find if you allow abbreviations, acronyms, proper names or foreign words. However, I'm half-convinced that there is no solution with common everyday words. It's almost spooky how you can find seven words but not the eighth. My near-misses:
NOS ARE HOP BED FLU DOS EAT SIN EAR OAR AIR EAT WRY POD SKY WHY TEN WRY
In the first square, the first word can be used in a sentence such as "The NOS have it" summarizing a vote. …
Thursday, September 3, 2015
2nd update : Brief Explain
In this project, I am going to build a Tic-Tac-Toe software which enable us to play with computer. With this program, user can play the game with bot when alone.
Using GUI-Tkinter for the interface, i will try to make the software user friendly, and state the step while the game is running.
Using Codecademy to improve my basic knowledge about python language and make my project run smoothly and nicely.
Here are the website i used
Using GUI-Tkinter for the interface, i will try to make the software user friendly, and state the step while the game is running.
Using Codecademy to improve my basic knowledge about python language and make my project run smoothly and nicely.
Here are the website i used
Monday, August 24, 2015
Introduction
I am student from Foundation in Information Technology, Multimedia University,from FCI . My name is Tan Wen Jian had been given a task for our mini it project:
"To provide students with the ability to identify, formulate and solve small IT related problems by applying the knowledge on problem solving skills in programming."
Learning Outcome:
Using Python to create the software. Our lecturer Mr Khairi, teach us about the Python language, and give support toward our project. We also use the Code Academy to enhance our knowledge and skill about Python language.
"To provide students with the ability to identify, formulate and solve small IT related problems by applying the knowledge on problem solving skills in programming."
Learning Outcome:
- Develop a solution to simple IT problems.
- Produce a technical report.
- Justify impact of the project to the stakeholders.
Using Python to create the software. Our lecturer Mr Khairi, teach us about the Python language, and give support toward our project. We also use the Code Academy to enhance our knowledge and skill about Python language.
Thank You, and stay tuned
Subscribe to:
Posts (Atom)