首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
讲解data编程、辅导Python语言程序、Python程序辅导 辅导Python编程|解析Java程序
项目预算:
开发周期:
发布时间:
要求地区:
Lab 4: 2 Player Tic Tac Toe
Due Jun 2 by 11:59pm
Points 30
Submitting an external tool
Available Apr 30 at 5:20am - Jun 4 at 11:59pm about 1 month
Purpose of this Lab:
The purpose of this lab is to get you used to networking by using sockets. (In our case, both the
client and the server will be running on our local machine) and creating a user interface. The
main libraries to be used are the sockets library (socket) and tkinter (or PyGames).
As for all labs this quarter, you will need to ensure your code works using IDLE with the version
being used this quarter (Python 3.8), and refer to my lecture on sockets and tkinter for a
refresher on how to use sockets and create a user interface.
Introduction to the Lab :
In this lab, we will be creating a Tic Tac Toe game. For those not familiar with Tic Tac Toe, refer
to this Wikipedia page (Links to an external site.)
(https://en.wikipedia.org/wiki/Tic-tac-toe)
for it. In short, Tic Tac Toe is a 2-player game where one player's game piece is X and the
second player's game piece is O (letter). The players take turns putting 1 of their game pieces
in 1 of the empty slots in the 3 by 3 board. The first player to get 3 of their game pieces to align
(vertically, horizontally or diagonally) wins. If the board has no empty slots and neither of the
players has already won, no one wins and the game ends in a tie.
For this lab, I would like you to use sockets to pass the player moves between the players, one
of whom is acting as the server and the other as the client. Our tic tac toe game will use a
standard 3 x 3 board, and we will also use the standard x/X and o/O for the values that we will
be passing back and forth.
Program Overview:
Here is an overview of the program flow of this Tic Tac Toe game:
Player 1, the host of the game (who can also be thought of as the server), starts the game on
their side, displaying shareable join information (server connection info) and waiting for another
player to join them. Player 2, the player joining in (who can also be thought of as the client),
enters the information of the host and sends a request to the host asking to let them join the
game. Player 1 accepts the request, and starts the game.
After the game has begun, Player 2 makes and sends the first move of the game (Player 2 will
always make the first move of every game) to Player 1 who had been waiting for them. Then,
Player 1 makes and sends their move to Player 2, who waits for Player 1’s move. The game
2021/6/3
Lab 4: 2 Player Tic Tac Toe (No Autograder for this Assignment)
2/5
continues on, with both players keeping track of the board and waiting for each other to make
and send their moves.
After the game is over, Player 2 decides if they want to play again or not, and Player 1 waits for
their decision. If both the users want to play again, Player 1 again waits for Player 2 to make
the first move of the game, and everything repeats.
Once either of the players is done playing, the game ends for both and displays the statistics of
the games played.
Program Details:
You will create 3 new modules with the following details:
BoardClass (gameboard.py)
General Information:
The board game will consist of the following public interface. (Note this module is
to be imported and used by both player1 and player2 modules)
The class should have a minimum of the following (you can add more if you need
to):
Class Variables:
The current board of the game that keeps track of all the moves
Usernames of both players
Username of the last player to have a turn
Total Number of games played
Total Number of wins
Total Number of ties
Total Number of losses
Class Methods:
recordGamePlayed()
Updates how many total games have been played
resetGameBoard()
Clear all the moves from game board
playMoveOnBoard()
Updates the game board with the player's move
isBoardFull()
Checks if the board is full (I.e. no more moves to make)
isGameFinished()
Checks if the latest move resulted in a win, loss or tie
Updates the wins, losses and ties count if the game is over
computeStats()
Gathers and returns the following information:
Usernames of both players
The username of the last person to make a move
The total number of games
2021/6/3
Lab 4: 2 Player Tic Tac Toe (No Autograder for this Assignment)
3/5
The total number of wins
The total number of losses
The total number of ties
Player 1 Module (Module Name: player1.py) - The host of the game, or the server
1. The user will be asked to provide the host information so that it can establish a socket
connection as the server
2. Player 1 will accept incoming requests to start a new game
3. When a connection request is received and accepted, Player 1 will wait for Player 2 to
send their username
4. Once Player 1 receives Player 2's user name, then Player 1 will send "player1" as their
username to Player 2 and wait for Player 2 to send their move.
1. Once Player 1 receives Player 2's move they will ask the user for their move and
send it to Player 1 using the current player display area.
1. Each move will correspond to the area on the board they user clicks on.
2. Once player 1 sends their move they will wait for Player 2's move.
3. Repeat steps 4.1 - 4.2 until the game is over (A game is over when a winner is
found or the board is full)
5. Once a game has finished (win or tie) player 1 will wait for player 2 to indicate if they
want to play again using the user interface.
1. If Player 2 wants to play again then Player 1 will wait for player 2's first move.
2. If Player 2 does not wants to play again then Player 1 will print the statistics
Player 2 Module(Module Name: player2.py) - The joining player, or the client
1. As the client, Player 2 will ask the user for the host information of Player 1 to join the
game:
1. Prompt the user for the host name/IP address of Player 1 they want to play with
2. Prompt the user for the port to use in order to play with Player 1
2. Using that information they will attempt to connect to Player 1
1. Upon successful connection they will send Player 1 their username (just
alphanumeric username with no special characters)
2. If the connection cannot be made then the user will be asked if they want to try
again:
1. If the user enters 'y' then you will request the host information from the user again
2. If the user enters 'n' then you will end the program
3. Once Player 2 receives Player 1's username or if the users decides to play again
1. Player 2 will ask the user for their move using the current player display area.
2. Send the move to player 1.
1. Player 2 will always be x/X
2. Player 2 will always send the first move to Player 1
1. Each move will correspond to the area on the board they user clicks on.
3. Once player 2 sends their move they will wait for Player 1's move.
2021/6/3
Lab 4: 2 Player Tic Tac Toe (No Autograder for this Assignment)
4/5
4. Repeat steps 3.1 - 3.2.3 until the game is over (A game is over when a winner is
found or the board is full)
4. Once a game has finished (win, lose, or tie) the user will indicate if they want to play
again using the user interface.
1. If the user enters 'y' or 'Y' then player 2 will send "Play Again" to player 1
2. If the user enters 'n' or 'N' then player 2 will send "Fun Times" to player 1 and end the
program
1. Once the user is done, the module will print all the statistics.
User Interface:
1. You will create a user interface using either the Tkinter library or the PyGames library. At
no point should the user be required to interact with the python shell. The user interface
should include the following components:
1. A text input in that beginning for the host information
2. A Tic Tac Toe board that allows the user to select their move by clicking on that
3. A dialog that asks the user if they want to play again
4. A display area where you display the BoardClass's computed statistics when they
are done and any other printed information specified in the lab.
5. A text input area for the players name
6. An area where the user name of the current players turn will be displayed.
7. An area where the final results will be displayed (It is okay to print this info in the
shell as well but it must be on the UI as well).
8. Quit button that allows the user to quit prior to finishing a game
Other Considerations:
1. All user inputs are case insensitive.
2. Hint: Maintain the current state of the board on both client and server side to determine if
someone won, lost or the board is full.
3. There is no autograder for this lab
4. Do not use any external libraries outside of what we have discussed in class or in this lab.
This is to ensure it runs on our machines without having to install any external libraries
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
urba6006代写、java/c++编程语...
2024-12-26
代做program、代写python编程语...
2024-12-26
代写dts207tc、sql编程语言代做
2024-12-25
cs209a代做、java程序设计代写
2024-12-25
cs305程序代做、代写python程序...
2024-12-25
代写csc1001、代做python设计程...
2024-12-24
代写practice test preparatio...
2024-12-24
代写bre2031 – environmental...
2024-12-24
代写ece5550: applied kalman ...
2024-12-24
代做conmgnt 7049 – measurem...
2024-12-24
代写ece3700j introduction to...
2024-12-24
代做adad9311 designing the e...
2024-12-24
代做comp5618 - applied cyber...
2024-12-24
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!