首页
编程语言
数据库
网络开发
Algorithm算法
移动开发
系统相关
金融统计
人工智能
其他
首页
>
> 详细
CSCI 201讲解 、辅导 c/c++,Python编程
Assignment #2
CSCI 201 Fall 2024
Page 1 of 11
Assignment #2
CSCI 201 Fall 2024
6% of course grade
Title
Networked Crossword Puzzle
Topics Covered
Networking
Multi-Threading
Concurrency Issues
Introduction
This assignment will require you to create two different programs – a server and a client. You
will implement a networked crossword puzzle game where multiple users can play against each
other. There will be some concurrency issues since you will need to make sure only certain
clients can play at different times. There will be many ways to design out the program, so I
recommend you spend some time designing it out on paper before you begin coding.
Crossword puzzle game
A crossword puzzle is a word game consisting of interlocking horizontal and vertical grids.
Participants enter letters into these grids based on the provided clues. The game concludes when
all empty grids are correctly filled. Typically, the horizontal grids are referred to as ACROSS
entries, while the vertical grids are called DOWN entries. Each across or down entry, which
consists of a series of grids, corresponds to a word or phrase. All entries are indexed, and the
corresponding clues are provided for the participants. Additionally, the intersection of an across
entry and a down entry indicates a shared letter at that specific location, which usually serves as
an extra hint besides the entry-specific clues.
Crossword puzzle game example
Assignment #2
CSCI 201 Fall 2024
Page 2 of 11
Server Functionality
The server will be responsible for reading the puzzle data from a file and distributing it to the
clients when they connect. To simplify execution of your program, only one game can be
occurring at a time. Each game will have between 1 and 3 players. The first client to connect to
the server will specify the number of players.
The server will have (possibly) multiple puzzle data files in a directory called gamedata at the
top of your project directory. Make sure that you specify a relative path when reading the puzzle
data files so the graders can drop their puzzle data files in the gamedata directory and run your
program without having to change any hard-coded variables. Your server program will need to
open the directory that contains all the puzzle data files and determine how many files are in that
directory. It will then randomly choose one of the files to use. Of course, if there is only one file
in the directory, that is the one that will be chosen. The names of the files are irrelevant since the
server will choose one of them randomly, so they could be named anything at all.
Each game data file will contain all the information needed to play a game. The file will be
formatted as a Comma Separated Value (CSV) file with ACROSS on the first line, followed by one
or more lines formatted as:
ACROSS,,
,
,
The file will then have a line with the word DOWN, then one or more lines formatted the same as
above. Here is a sample file:
ACROSS,,
1,trojans,What is USC’s mascot?
2,dodgers,What professional baseball team is closest to USC?
3,csci,What is the four-letter prefix for Computer Science?
DOWN,,
1,traveler,What is the name of USC’s white horse?
4,gold,What is one of USC’s colors?
5,marshall,Who is USC’s School of Business named after?
Your server program will need to determine if the file is formatted properly. The only rules that
you need to check are the following:
1. The words ACROSS and DOWN exist on their own lines and only one time in the file and
are followed by empty CSV fields.
2. The other lines in the file are formatted with three parameters – integer, answer, question.
a. The three parameters are separated by commas as it is normal for CSV files.
Assignment #2
CSCI 201 Fall 2024
Page 3 of 11
3. If a number in the ACROSS section matches a number in the DOWN section, the
answers must start with the same letter. In the example above, the lines with
trojans and traveler both start with same letter “t”, since their number is
the same, “1”.
4. An answer cannot contain any whitespace.
5. Questions normally will contain whitespace.
The server will need to determine how to format the answers in the game board so it can send out
that information to all the clients (since the clients all need to render the game board the same).
There will be different ways that the data can be rendered. You can assume that there is at least
one viable way to render the game board. In other words, you can assume that each word
contains at least one letter that is in another word and the board can be rendered for the player.
This may be challenging to figure out, so make sure to write out an algorithm to solve this before
you begin coding.
If the ACROSS number and the DOWN number are the same, that means the answers will start
with the same letter, as explained above. The numbers do not have to be in order in the file, but
all the questions for a section will immediately follow the lines with ACROSS or DOWN.
There will not be more than one ACROSS or DOWN section in a file.
All the answers to the questions are case-insensitive. The server will wait to randomly
determine a game file to read until the first client has connected.
The server will listen on port 3456. When a client connects to it, it will randomly determine a
game data file to read, verify that the file is formatted properly, and figure out a rendering of the
game board. If there are no valid game files, the server should report that to the client and
continue waiting for another client to connect. At that point, it will read the directory again and
randomly choose another game data file.
When the first client connects to it, the first message it sends will be a number between 1 and 3
to determine how many players will be part of the game. If the number is 1, the server can start
the game. If the number is 2 or 3, the server will need to wait until the proper number of clients
have connected to the server before starting the game.
Game Play
Once the proper number of players have joined the game, the server will send out the game board
to all the players. The players will begin play in the order they joined the game. Only one player
should be able to play at a time. More information on how the client will behave is included in
the relevant section below. Every play should be sent to the server. The server validates
whether the answer provided for the appropriate question is correct. If it is, the same player who
guessed the correct answer will get to play again. If it is incorrect, play will proceed to the next
player. Regardless, the server should send a notification to all the clients letting them know what
Assignment #2
CSCI 201 Fall 2024
Page 4 of 11
question the player was attempting to answer, what the player guessed, and whether it was
correct.
The server should keep track of how many correct answers each player has guessed, and which
questions are remaining. Once all the questions have been answered correctly, the server will
notify all the players of the final score (1 point for each question answered correctly) and who
the winner is (or a tie, if that is the case).
You do not need to maintain statistics, and there are no user accounts. Once a game concludes,
the clients should terminate. The server should loop and allow a new game to begin by having
another client connect. The server cannot allow another game to begin while a game is being
played – only one game is played at a time. The server should never have to be restarted,
though, to play subsequent games. Once the server has started, the only way to stop playing
games is to “kill” the server, which is done by clicking “Terminate”, the red square, in Eclipse.
Client Functionality
The client will begin by welcoming the user to the game and prompting them for the server
hostname and port. If a valid connection is not made, an error message should be displayed, and
the client should loop back to allow the user to enter another server hostname and port. If a valid
connection is made, the first client should prompt for the number of players. The valid number
of players is between 1 and 3. The first client should continue prompting for the number of
players until a valid number is entered.
If the necessary number of players have not yet joined the game, all the clients, except for the
last one to join, should display a message that says “Waiting for player x.” The “x”
should be replaced by the player number for which we are waiting. When a player joins, all
clients, except for the last one, should display a message stating from which IP address the player
joined.
Once all the required players have joined, all clients should display a message that says, “The
game is beginning.” The server will send the game board, which includes the crossword
puzzle and the questions.
Play will proceed through the players based on the order they joined the game. Player 1 will go
first and select to guess the answer to a question that is either “down” or “across”, as in “Would
you like to answer a question across (a) or down (d)?”. If “d” or “a” is not
entered, the client should prompt the user again. The user will then be prompted to enter a
number for which question to answer, as in “Which number?”. If the value entered is not
valid, the client should prompt the user again.
Once the user has entered a valid question, (let’s assume “a” and “1” were entered), the client
should prompt the user to enter the answer to the question, “What is your guess for 1
Assignment #2
CSCI 201 Fall 2024
Page 5 of 11
across?” The answer should be sent to the server, which will return whether it was correct or
incorrect to all the connected clients. The (possibly) updated game board and remaining
questions to answer will be sent to all clients. Do not display questions that have already been
answered correctly.
If a player answers a question correctly, they will get to answer another question. If the answer
was incorrect, play will move to the next client who joined. If the last player that joined answers
a question incorrectly, play will proceed with the first player.
Play continues until all the correct answers have been guessed. The completed game board with
all the questions will be displayed, and the final scores will be shown. The final score is only
based on how many questions a user guessed correctly. If one player has more correct answers
than any the others, that player is declared the winner. If two players have the same score, the
game is declared as a tie.
All the clients will then terminate, but the server will loop back to allow new players to join and
start a new game.
The sample execution that follows shows all the messages that should be displayed throughout
the game. Your output should be as close as possible to the one shown below, though the
crossword puzzle may look different for the same answers since that will be based on how your
program generates it.
Assignment #2
CSCI 201 Fall 2024
Page 6 of 11
Sample Execution
Below is a sample execution of the program with the user input in bold red (though the input
will not be bolded, or colored, when you run your program). The first column is the server, the
second column is the first player, and the third column is the second player. Ignore all the extra
blank lines that are displayed, to try to show you the timeline at which output is generated, but in
the actual output, all the lines will be displayed next to each other. This sample run is using the
sample puzzle game file that was provided earlier in the assignment.
Server Player 1 Player 2
Listening on port 3456.
Waiting for players...
Welcome to 201 Crossword!
Enter the server hostname: localhost
Enter the server port: 3456
Connection from 127.0.0.1
How many players will there be? 2
Number of players: 2
Waiting for player 2.
Reading random game file.
File read successfully.
Waiting for player 2.
Welcome to 201 Crossword!
Enter the server hostname:
localhost
Enter the server port: 3456
Connection from 127.0.0.1
Player 2 has joined from 127.0.0.1. There is a game waiting for you.
Player 1 has already joined.
Game can now begin.
The game is beginning. The game is beginning.
Sending game board. 5_
Across
1 What is USC’s mascot?
2 What professional baseball team is
closest to USC?
3 What is the four-letter prefix for
Computer Science?
Down
1 What is the name of USC’s white
horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Across
1 What is USC’s mascot?
2 What professional baseball team
is closest to USC?
3 What is the four-letter prefix
for Computer Science?
Down
1 What is the name of USC’s white
horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Assignment #2
CSCI 201 Fall 2024
Page 7 of 11
Player 1’s turn.
Would you like to answer a question
across (a) or down (d)? d
That is not a valid option?
Would you like to answer a question
across (a) or down (d)? a
Which number? 4
That is not a valid option.
Which number? 1
What is your guess for 1 across?
trojans
Player 1’s turn.
Player 1 guessed “trojans” for
1 across.
Player 1 guessed “trojans” for 1
across.
That is correct.
That is correct. That is correct.
Sending game board.
Across
2 What professional baseball team is
closest to USC?
3 What is the four-letter prefix for
Computer Science?
Down
1 What is the name of USC’s white
horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Across
2 What professional baseball team
is closest to USC?
3 What is the four-letter prefix
for Computer Science?
Down
1 What is the name of USC’s
white horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Player 1’s turn.
Would you like to answer a question
across (a) or down (d)? d
Which number? 1
What is your guess for 1 down? Trav
Player 1 guessed “Trav” for 1
down.
Player 1 guessed “Trav” for 1
down.
That is incorrect.
That is incorrect. That is incorrect.
Sending game board.
Assignment #2
CSCI 201 Fall 2024
Across
2 What professional baseball team is
closest to USC?
3 What is the four-letter prefix for
Computer Science?
Down
1 What is the name of USC’s white
horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Across
2 What professional baseball team is
closest to USC?
3 What is the four-letter prefix for
Computer Science?
Down
1 What is the name of USC’s white
horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Players 2’s turn.
Players 2’s turn. Would you like to answer a question
across (a) or down (d)? d
Which number? 1
What is your guess for 1 down?
traveler
Player 2 guessed “traveler”
for 1 down.
Player 2 guessed “traveler” for 1
down.
That is correct.
That is correct. That is correct.
Sending game board.
Across
2 What professional baseball team is
closest to USC?
3 What is the four-letter prefix for
Computer Science?
Down
1 What is the name of USC’s white
horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Across
2 What professional baseball team is
closest to USC?
3 What is the four-letter prefix for
Computer Science?
Down
1 What is the name of USC’s white
horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Assignment #2
CSCI 201 Fall 2024
Page 9 of 11
Player 2’s turn.
Player 2’s turn. Would you like to answer a question
across (a) or down (d)?
Sending game board.
2 What professional baseball team is
closest to USC?
Across
2 What professional baseball team is
closest to USC?
Player 1’s turn.
Would you like to answer a question
across (a) or down (d)? d
That is not a valid option.
Would you like to answer a question
across (a) or down (d)? a
Which number? 2
What is your guess for 2 across?
Dodgers
Player 1’s turn.
Player 1 guessed “Dodgers”
for 2 across.
Player 1 guessed “Dodgers” for 2
across.
That is correct.
That is correct. That is correct.
Sending game board.
Across
1 What is USC’s mascot?
Across
1 What is USC’s mascot?
Assignment #2
CSCI 201 Fall 2024
Page 10 of 11
The game has concluded.
Sending scores.
Waiting for players...
2 What professional baseball team is
closest to USC?
3 What is the four-letter prefix for
Computer Science?
Down
1 What is the name of USC’s white
horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Final Score
Player 1 – 4 correct answers.
Player 2 – 2 correct answers.
Player 1 is the winner.
2 What professional baseball team is
closest to USC?
3 What is the four-letter prefix for
Computer Science?
Down
1 What is the name of USC’s white
horse?
4 What is one of USC’s colors?
5 Who is USC’s School of Business
named after?
Final Score
Player 1 – 4 correct answers.
Player 2 – 2 correct answers.
Player 1 is the winner.
Assignment #2
CSCI 201 Fall 2024
Page 11 of 11
Grading Criteria
The way you go about implementing the solution is not specifically graded, but the output must
match exactly what you see in the execution above. The maximum number of points earned is
5.
Networking (0.5)
0.1 - first client can connect to server
0.2 - only the number of clients as specified by first client can connect to server
0.2 - server allows a new game to be played after previous one ends without restarting
File Reading (0.5)
0.1 - random file chosen from gamedata directory
0.1 - gamedata directory is at the top of the project folder
0.1 - server chooses game data file after first client connects
0.2 - client is notified if no valid game data file exists
Game Board Rendering (1.5)
1.5 - game board is rendered in a correct manner where there are no disjoint words (i.e., they are all
connected to each other)
Game Play (1.5)
0.1 - only one player can answer a question at a time
0.1 - once a question has been answered correctly, that question is no longer displayed
0.1 - answers are case-insensitive
0.1 - proper error checking is in place for “a” and “d”
0.1 - proper error checking is in place for the question number to answer
0.2 - all clients are notified of answers that are guessed by other players
0.1 - updated game board is displayed properly
0.3 - final score is displayed after all answers have been guessed correctly
0.1 - client terminates after the final score is displayed
0.3 - the game is played as expected with no exceptions, crashing, deadlock, starvation, or freezing
Output (0.4)
0.4 - the output is the same as what is provided in the sample above
Synchronization (0.6)
0.3 - synchronization through monitors, locks, or semaphores is used somewhere in the server
0.3 - synchronization through monitors, locks, or semaphores is used somewhere in the client
联系我们
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-21:00
微信:codinghelp
热点文章
更多
program编程讲解 、sql编程语言...
2024-10-08
sehs4517讲解 、java/c++编程设...
2024-10-08
辅导 java编程、讲解 python/c...
2024-10-07
讲解 program、辅导 python/ja...
2024-10-07
ma2552讲解 、辅导 matlab设计...
2024-10-07
fit5147辅导 、讲解 css/java编...
2024-10-07
讲解 c++程序、辅导 python/ja...
2024-10-07
讲解 bism7202 information sy...
2024-10-07
讲解 desc9169: daylight in b...
2024-10-07
辅导 construction technology...
2024-10-07
讲解 s322 assignment 1 – fa...
2024-10-07
辅导 assessment 2: fully-dev...
2024-10-07
讲解 fite7410 financial frau...
2024-10-07
讲解 me 588, dynamics and vi...
2024-10-07
讲解 ccc8013 the process of ...
2024-10-07
讲解 apam 2417: contemporary...
2024-10-07
辅导 stats 2da3 fall 2024 as...
2024-10-07
辅导 econ 372 intermediate m...
2024-10-07
辅导 af6036_ld6077 risk in f...
2024-10-07
辅导 stat 3201: practice mid...
2024-10-07
热点标签
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: 99515681 微信:codinghelp
© 2024
www.7daixie.com
站长地图
程序辅导网!