99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

合肥生活安徽新聞合肥交通合肥房產(chǎn)生活服務(wù)合肥教育合肥招聘合肥旅游文化藝術(shù)合肥美食合肥地圖合肥社保合肥醫(yī)院企業(yè)服務(wù)合肥法律

代做CS3357A、代寫Python設(shè)計(jì)編程

時(shí)間:2023-12-09  來源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯(cuò)


CS3357A COMPUTER NETWORKING

Assignment #4: Building a multi-player server-client snake game.

Assignment Purpose

The goal of this assignment is to extend the functionality of the previously developed Snake

game to support three additional features:

** The server should handle multiple clients/snakes simultaneously. Each client will have its

own snake, enabling a multiplayer environment where multiple snakes share the field.

Each client will receive a game state that includes the position of all snakes to display

them. You can decide colors. Check the “Communication Protocol and Game State”

section for instruction on implementing the multi-player feature.

2- While playing, Clients can send a public message to the server to be broadcasted to all

clients. Check the chatting section for instruction on implementing the public messaging

part.

3- Both the server and the clients encrypt their messages using RSA encryption algorithm.

In the RSA algorithm, each party generates a key pair (public key, private key), where the

private key is kept as a secret at the sender and is used to encrypt the sender messages,

and the public key is publicly shared with the receiver and is used to decrypt the

messages at the receiver side. Check the Encryption section for instruction on

implementing messages and control inputs encryption.

The image below shows the game window that should be displayed on the client side in this

assignment.

 

Figure 1 A screenshot showing the graphical interface of the snake game on the client side, containing three snakes and 4 snacks.

The screenshot also shows the terminal of one of the three connected clients with messages exchanged between clients.

The server is responsible for:

1. Accepting multiple client connections.

2. Managing the game's logic for all connected clients.

3. Broadcasting the game state to all clients.

4. Receiving and parsing each client's input commands.

5. Applying the received game controls to update the game state.

6. Receive public messages from clients and broadcast them to all clients.

7. Encrypting outgoing public messages.

8. Decrypting incoming controls inputs and public messages.

The snake client is responsible for:

1. Connecting to the server.

2. Sending control inputs to the server.

3. Receive and parse the game state.

4. Displaying the game interface with all the snakes based on the received game state.

5. Send public messages to the server.

6. Receive the public messages broadcasted by the server and display them on the terminal.

7. Encrypts outgoing control inputs and public messages before sending them to the server.

8. Decrypts incoming public messages received from the server.

Assignment Description

Modify the snake_server.py and snake_client.py files of assignment 3 to support handling multiple players,

RSA-based secure communication, and public messaging between clients. Each client will be assigned a

snake where he will be able to control it by sending encrypted control inputs to the server. On the other

hand, the server managesthe game logic including recording snakes and snacks positions; applying control

inputs; and returning the game state.

In the previous assignment (assignment #3), you were given the server side code which is separated into two

files: snake.py and snake_server.py, and you had to implement the client side code. These files will be used

as the starting code for this assignment.

In this assignment, no new files are given, but you are required to use and modify the server/client

code files of the previous assignments to support the new functionalities.

As this assignment builds on previous ones, the following diagrams illustrate the connection between

assignment 2, assignment 3, and assignment 4:

Figure 2 In the chatting application of assignment 2, the server can handle concurrent client connections. A connected client can

send a public message to the server to be broadcasted to all clients. No encryption is used.

Figure 3 In the single-player snake game of assignment 3, the server can accept a connection from a single client. Each cycle, the

client will send a control input, for example “get”, and the server will reply with the game state. Finally, the client uses the game

state to draw the game display. No encryption is applied; the server and client send data as plain text.

Figure 4 In assignment 4, you are required to implement a multi-player snake game. There are few differences between this

version of the game and the version implemented in the previous assignment. First, the server can accept concurrent client

connections. Once a client connects to the server, the server deploys a new snake and assigns it to that user. Second, in addition

to control inputs, clients can send public messages. Third, control inputs and public messages (sent by both the server and

clients) are encrypted using RSA encryption algorithm.

Snake game

The snake game that we will implement in this assignment is similar to the one implemented in the previous

assignment with additional features.

The rules of the game are implemented in the snake.py file which is used by the server script

(snake_server.py).

Game controls

In assignment 3, we implemented seven game controls sent by the client to enable him to control

the snake. Since we are using the code scripts of the previous assignment as a starting code for

this assignment, these seven game controls are still used in this assignment. However, feel free to

change the format of the control messages. For example, instead of sending the get command as

“get”, you can send “control:get” instead. This way the server knows this is a control input and

not a public message that should be broadcasted to all clients.

Chatting

Players will be able to send a message to all other players by sending a message to the server and the server

will broadcast the message to all players. Therefore, in each cycle, the server can receive a control input or a

message from each client. The two conditions apply:

1. A player can only send a public message to all players, he cannotsend a private message to a

particular player. For example, if three players are connected, A, B, and C. Player A can send a

public message to the server and the server will broadcast this message to A, B, and C. Player A

can’t send a private message to player B or C.

2. Instead of having the user type in the message it wants to send to the server, each player should

have a set of predefined messages each associated with a hotkey. When the user presses a hotkey,

the corresponding message should be sent to the server to be broadcasted to all other players. Each

player choosesits unique set of messages. For example, player A can have the following set of

messages: [“Congratulations!”, “It works!”, “Ready?”] assigned to the following keys: [‘z’, ‘x’, ‘c’].

When user A pressesthe key ‘x’, the message “It works!” should be sent to the server. The server

will then broadcast the message to users B and C. Upon receiving player A’s message from the

server, users B and C will display the received message on their terminal. You are required to

implement a client that has a set of three predefined messages each assigned a key.

Encryption

RSA Encryption Workflow

Consider a client k that wants to securely communicate with a server using RSA algorithm. First,

client k must generate its own RSA key pair: (client_k_public_key, client_k_private_key). When

client k connects to the server, it will send its public key to the server. After that, whenever Client

k wants to send a message to the server, it will encrypt the message using its own private key,

and send the encrypted message to the server, the server will then use client_k_public_key to

decrypt the received encrypted message. Similarly, the server will construct its own RSA key

pair: (server_public_key, server_private_key). The server will share its public key with every

client that connects to it. After that, if the server wants to send an encrypted message to client k,

it will encrypt the message using its own private key. Client k will then be able to decrypt the

received message using the server’s public key.

What to encrypt

In this assignment, the server exchanges various types of data with clients. Each cycle, the client

must send a control message and possibly a public message to be broadcasted to all clients. On

the other hand, the server sends the game state and the public messages that it received from any

client to broadcast to other clients. Therefore, the client can send two types of data: control

inputs and public messages, and the server can send two types of data: the game state and public

messages. You are required to encrypt all the exchanged data between the server and client

except the game state which can be sent without encryption. We don’t encrypt the game state

because encryption becomes more expensive (takes a lot of time) as the length of the text to be

encrypted grows.

Communication protocol and game state

In the previous assignment, the exact form of the game state was provided which contains the coordinates of

the snakes and the coordinates of the snacks separated by a “|” character. As this assignment introduces

more features that require adjusting both the server and client scripts, the communication protocol provided

for the previous assignment will not work. For example, in the previous assignment, the server and the client

exchange the control inputs and the game state each cycle. In this assignment, clients can send a public

message to the server to be relayed to the other clients. Therefore, the communication protocol should be

redesigned such that under the new communication protocol, the client can send both types of data (i.e.

control inputs and public messages), and the server can differentiate between both types.

Redesign the game communication protocol. This includes re-formatting of the control inputs and the

game state; and modifying the sequence and contents of exchanged data. Feel free to make any changes in

the client and server scripts of the previous assignment to add the new functionalities (multi-client

connection, public chatting between clients, and message encryption).

Deliverables

Submit four files:

1. snake_server.py: Snake game server-side code which can handle multiple client connections and

public messaging.

2. Snake.py: Helper file for snake_server.py. It contains the functions to handle the game logic.

3. Screenshot.png: Screenshot of the game display showing at least three players (snakes) in the field.

The screenshot should also show the terminal of one of the clients with exchanged messages printed

on the terminal (similar to figure 1).

4. snake_client.py: Snake game client side

Use the snake.py, snake_server.py, and snake_client.py files from the previous assignment as starting

code. Modify these files as you want to implement the features of this assignment.

Rubric

This assignment is out of 50. Marks are distributed as follows:

1. Server can handle multiple client connections concurrently. 5 marks

2. Server manages the game's logic for all clients(the game runs as intended). 10 marks

3. Server receives messages from clients and broadcasts them to all clients. 5 marks

4. Server broadcasts the game state to all clients. 5 marks

5. Server encrypts the public messages it broadcasts to clients. 5 marks

6. Client displays the game with all snakes based on the received game state. 5 marks

7. Client sends movement commands to the server. 5 marks

8. Client sends a message to the server when the user presses the assigned hotkey. 5 marks

9. Client encrypts the control inputs and public messages it sends to the server. 5 marks

Late submission

Late assignments will be accepted for up to two days after the due date, with weekends

counting as a single day; the late penalty is 20% of the available marks per day. Lateness is

based on the time the assignment is submitted.

Extensions will be granted only by your course instructor. If you have serious medical or

compassionate grounds for an extension, you must take supporting documentation to the

Academic Counselling unit of your faculty, who will contact the instructor.

請(qǐng)加QQ:99515681 或郵箱:99515681@qq.com   WX:codehelp

 

掃一掃在手機(jī)打開當(dāng)前頁
  • 上一篇:ACS133編程代寫、代做MATLAB程序語言
  • 下一篇:CP1404程序代做、代寫Java,c++編程設(shè)計(jì)
  • 無相關(guān)信息
    合肥生活資訊

    合肥圖文信息
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
    出評(píng) 開團(tuán)工具
    出評(píng) 開團(tuán)工具
    挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
    挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
    海信羅馬假日洗衣機(jī)亮相AWE  復(fù)古美學(xué)與現(xiàn)代科技完美結(jié)合
    海信羅馬假日洗衣機(jī)亮相AWE 復(fù)古美學(xué)與現(xiàn)代
    合肥機(jī)場(chǎng)巴士4號(hào)線
    合肥機(jī)場(chǎng)巴士4號(hào)線
    合肥機(jī)場(chǎng)巴士3號(hào)線
    合肥機(jī)場(chǎng)巴士3號(hào)線
    合肥機(jī)場(chǎng)巴士2號(hào)線
    合肥機(jī)場(chǎng)巴士2號(hào)線
    合肥機(jī)場(chǎng)巴士1號(hào)線
    合肥機(jī)場(chǎng)巴士1號(hào)線
  • 短信驗(yàn)證碼 豆包 幣安下載 AI生圖 目錄網(wǎng)

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網(wǎng) 版權(quán)所有
    ICP備06013414號(hào)-3 公安備 42010502001045

    99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

          9000px;">

                久久色在线观看| 1区2区3区国产精品| 亚洲乱码中文字幕综合| av不卡在线观看| 性久久久久久久久| 久久久一区二区| 色婷婷av一区二区三区大白胸| 午夜视频一区二区| 欧美精彩视频一区二区三区| 欧美午夜免费电影| 国产在线国偷精品免费看| 中文字幕亚洲欧美在线不卡| 欧美一级黄色片| 91视频精品在这里| 国内久久婷婷综合| 亚洲va在线va天堂| 中文字幕一区二区三区视频| 日韩亚洲欧美高清| 在线观看不卡一区| 成人自拍视频在线观看| 日韩av在线免费观看不卡| 亚洲欧洲av另类| 精品国产伦一区二区三区观看体验| 在线观看亚洲一区| 成人精品小蝌蚪| 久久99精品一区二区三区三区| 一区二区三区色| 国产午夜精品久久久久久免费视 | 国产精品视频一二三区 | 欧美亚洲综合一区| 成人丝袜高跟foot| 国精品**一区二区三区在线蜜桃| 亚洲成人精品一区| 亚洲综合无码一区二区| 自拍偷拍国产亚洲| 国产精品久久久久久久久免费桃花 | 久久av资源网| 偷偷要91色婷婷| 亚洲综合成人在线视频| 亚洲欧美日韩国产一区二区三区| 国产精品久久久久久久久免费丝袜 | 香蕉加勒比综合久久| 亚洲色图在线播放| 1024亚洲合集| 综合电影一区二区三区| 亚洲欧美一区二区三区极速播放 | 风间由美中文字幕在线看视频国产欧美 | 亚洲123区在线观看| 亚洲另类色综合网站| 最新日韩在线视频| 一区二区三区欧美在线观看| 欧美一区二区日韩| 日韩视频在线观看一区二区| 精品国产伦一区二区三区免费| 精品国产污污免费网站入口 | 欧美午夜影院一区| 欧美性大战久久久| 欧美一三区三区四区免费在线看| 91精品国产欧美一区二区成人| 在线播放视频一区| 精品国产乱码久久久久久影片| 久久久99久久精品欧美| 欧美国产精品v| 伊人婷婷欧美激情| 丝袜脚交一区二区| 激情综合色播激情啊| 成人小视频在线| 在线精品亚洲一区二区不卡| 欧美三级视频在线观看| 欧美精品一区二区三区一线天视频 | 国产精品一二三区| 不卡区在线中文字幕| 欧美丝袜自拍制服另类| 日韩欧美三级在线| 国产精品国产精品国产专区不片| 亚洲色图视频免费播放| 日韩av高清在线观看| 成人动漫视频在线| 欧美日韩国产美| 久久久国产精品午夜一区ai换脸 | 中文字幕精品一区二区三区精品| 亚洲色图色小说| 老色鬼精品视频在线观看播放| 波多野结衣亚洲| 欧美一区二区黄| 亚洲欧洲av在线| 国产在线精品一区二区不卡了 | 亚洲成在线观看| 国产成a人亚洲精| 欧美另类videos死尸| 最新久久zyz资源站| 久久精品国产亚洲5555| 日本韩国欧美在线| 国产色婷婷亚洲99精品小说| 日本在线不卡视频一二三区| 色8久久精品久久久久久蜜 | 国产嫩草影院久久久久| 日韩专区中文字幕一区二区| 色综合亚洲欧洲| 国产网站一区二区| 精品一区二区免费在线观看| 欧美亚洲动漫另类| 国产精品欧美综合在线| 韩国av一区二区| 欧美va亚洲va国产综合| 亚洲va在线va天堂| 欧美日韩中文字幕一区二区| 亚洲欧洲精品一区二区精品久久久| 国产一区二区三区不卡在线观看 | 欧美美女一区二区三区| 亚洲男人都懂的| 精品夜夜嗨av一区二区三区| 在线影院国内精品| 亚洲影院在线观看| www.在线成人| 国产精品进线69影院| 国产成人综合在线观看| 久久久久久久综合色一本| 精品一区二区三区在线观看国产| 日韩写真欧美这视频| 青青青伊人色综合久久| 欧美高清性hdvideosex| 亚洲国产精品一区二区久久 | 337p日本欧洲亚洲大胆精品| 蜜桃91丨九色丨蝌蚪91桃色| 欧美成人综合网站| 国产美女精品一区二区三区| 久久久久久免费| 国产白丝网站精品污在线入口| 国产蜜臀97一区二区三区| 成人激情小说网站| 国产精品视频你懂的| 99精品国产99久久久久久白柏| 亚洲精品伦理在线| 欧美精品国产精品| 韩国av一区二区三区四区| 欧美经典三级视频一区二区三区| av在线不卡电影| 一区二区三区电影在线播| 欧美浪妇xxxx高跟鞋交| 日韩精品乱码av一区二区| 8x8x8国产精品| 极品销魂美女一区二区三区| 国产精品视频看| 欧美综合在线视频| 久久精品99国产精品| 亚洲国产精品v| 欧美日韩一区高清| 国内精品写真在线观看| 亚洲欧洲三级电影| 欧美一区二区三区四区高清| 成人白浆超碰人人人人| 亚洲va欧美va人人爽| 欧美极品少妇xxxxⅹ高跟鞋| 欧美视频三区在线播放| 国产成人免费视频网站| 亚洲小少妇裸体bbw| 久久精品综合网| 欧美日韩不卡一区| 成人av资源在线观看| 日韩专区一卡二卡| 亚洲欧美在线观看| 7777精品伊人久久久大香线蕉最新版| 精品中文字幕一区二区小辣椒 | 亚洲视频1区2区| 精品国产一区二区三区久久久蜜月| 成人免费毛片嘿嘿连载视频| 天堂久久久久va久久久久| 亚洲国产精华液网站w| 欧美一区国产二区| 欧美性视频一区二区三区| 国产精品影视网| 免费一级片91| 亚洲永久精品大片| 一色屋精品亚洲香蕉网站| 日韩一区二区不卡| 91视视频在线直接观看在线看网页在线看| 麻豆免费精品视频| 五月婷婷色综合| 亚洲一区在线观看视频| 国产精品久久久久久久久晋中| 精品少妇一区二区三区视频免付费 | 久久免费偷拍视频| 日韩一级片网址| 欧美午夜精品一区二区蜜桃| av亚洲精华国产精华| 国产白丝网站精品污在线入口| 精品一区二区三区香蕉蜜桃| 蜜桃视频第一区免费观看| 日韩精品欧美精品| 人人狠狠综合久久亚洲| 午夜a成v人精品| 日本亚洲免费观看| 青青草国产精品97视觉盛宴| 日本免费新一区视频| 亚洲国产精品国自产拍av| 久久精品一区蜜桃臀影院| 久久久久久麻豆| 国产精品二三区| 亚洲视频 欧洲视频|