mình mới học lập trình c nhưng môn mạng máy tính thầy mình cho lam 1 đồ an, minh có vài chỗ còn chưa làm được, bạn nào biết giúp mình với, đề của mình cụ thể như sau
Viết chương trình cho phép Server làm trọng tài cho trò chơi “đua xe” giữa N client (N do
server qui định trước, 1 <= N <=10 ). Trò chơi được thực hiện như sau:
1. Với mỗi Client: Client sẽ đăng ký với Server nickname mà mình sử dụng ngay sau khi kết
nối thành công với Server. Lưu ý: các nickname không được đặt trùng nhau và được tạo
thành từ các ký tự ‘a’…’z’, ‘A’…’Z’, ‘0’..’9’, ‘_’ và dài không quá 10 ký tự; nếu có client
đặt trùng nickname với client khác, thì server yêu cầu client đăng ký lại nickname.
2. Khi đã nhận đủ kết nối của N clients, server sẽ gởi chiều dài, đặc điểm đường đua về cho
mọi client (Yêu cầu chiều dài đường đua phải lớn hơn 20 ô và nhỏ hơn 100 ô, ví dụ 30 ô).
Chiều dài đường đua sẽ do người dùng trên server nhập, ô xuất phát sẽ tính là ô số 1. Ngoài
ra, server sẽ báo cho mỗi client biết thứ tự kết nối của client đó. Sau đó server sẽ chọn ngẫu
nhiên một người đi trước, thứ tự đi sẽ bắt đầu từ người đi trước rùi tăng dần và lặp lại (Ví dụ
có 4 người chơi đánh sô là 0,1,2,3, server chọn ngẫu nhiên người 1 đi trước thì lượt đi tiếp
theo sẽ tới người 2, người 3 và quay về người 0), khi đã có thứ tự đi server sẽ ra hiệu cho các
Client bắt đầu trò chơi.
3. Với mỗi lượt chơi:
i. Các client sẽ lần lượt sẽ chọn random một số từ (1-6) (bấm một phím để chọn một
số random, hiện số này ra màn hình của client) và gửi về cho server. Server sẽ dựa
trên số random mà client gửi về sẽ đưa xe của client tiến đến đúng ô, kiểm tra loại ô
nếu ô của client di chuyển vào, nếu là:
· Ô ổ gà: thì dựa vào giá trị trừ ( 1<= n<=6) của ô đó mà client sẽ quay
ngược lại n ô, nếu giá trị trừ lớn hơn vị trí mà xe đó dang đứng thì đưa xe
đó trở lại vạch xuất phát.
· Ô nhiên liệu: thì dựa vào giá trị tiến (1<= n<=6) của ô đó mà client sẽ tiến
thêm n ô
· Ô bình thường: không có gì xảy ra.
· Sau khi server đã cho client lùi hoặc tiến n ô thì sẽ dừng lại tại ô mới đến
cho dù đó là ô bình thường hay ô ổ gà, nhiên liệu
· Ví dụ:
o Có 1 đường đua gồm 7 ô trong đó ô 1 là ô nhiên liệu có giá trị 3, ô
3 là ô ổ gà có giá trị là 4 và ô 5 là ô ổ gà có giá trị 2
o Giả sử client đang đứng ô 2 đổ được giá trị 3 sẽ đến ô 5, tại ô 5 là
ô ổ gà có giá trị là 2 client sẽ lùi lại 2 bước và đến ô 3 và client sẽ
dừng ở ô này mặc dù nó là ô ổ gà có giá trị 4
ii. Sau khi một client đã đi xong lượt thì server sẽ cập nhật tình hình đường đua cho
toàn bộ các client (thông báo về vị trí mới của client cho toàn bộ các client khác).
4. Trò chơi kết thúc khi có một client đi được số ô lớn hơn hoặc bằng với số ô của đường đua,
Server sẽ thông báo đến tất cả các client về client dành chiến thắng trong trò chơi.
5. Kết thúc trò chơi, Server tiếp tục nhận kết nối của N client khác và bắt đầu trò chơi mới.
Lưu Ý: Trong đường đua phải có n ô loại ổ gà và nhiên liệu với ( 1/3 tổng số ô<=n <= 2/3
tổng số ô)
mình đã làm được phần đăng kí nickname,còn phần ô ổ gà và ô nhiên liệu mình chưa làm được.mong được các bạn giúp đỡ.thankssss
Bookmarks