Курсов проект № 1 по “Интернет програмиране с Java”
1.2. Игра ”Крави и бикове”
Автор: Лъчезар Цеков
Версия: 0.9
Последна промяна: 21.03.2004
Да се напише програма на Java, която използвайки възможностите на пакета java.net реализира играта „Крави и Бикове” под формата на сървър, обслужващ клиентите си по протокол TCP. Не е необходимо да се разработва клиентско приложение, защото като клиент може да се използва стандартен telnet.
Сървърът трябва да дава възможност за играене на неограничен брой игри по едно и също време. При свързване на клиент със сървъра клиентът изпраща на сървъра името на играча, което се въвежда от конзолата.След като получи името на играча сървърът го добавя в списък с играчите, които желаят да играят. Сървърът връща на клиента списък с всички играчи които не играят в момента но са свързани към сървъра. Клиентът има възможност да стартира игра с някой от свързаните към сървъра играчи, които не играят в момента и са в списъка на чакащите или да изчака някои от останалите играчи да започне игра с него. Пример:
клиент: |
(стартираме на клиента с име на потребител Lucho) |
сървър: |
Free Players: 0)(wait for another player to choose you) 1)Krasi 2)Niki 3)Nakov 4)Boris 5)Dimityr Choose player: |
След стартиране на клиента и получаване на списъка със свободните играчи следва избор на играч. Той се извършва чрез въвеждане на номера на играча в конзолата на клиента .
сървър: |
Choose player: |
клиент: |
2 |
сървър: |
Lucho vs Niki Game started Please insert your numbers: |
Сървърът стартира игра, която включва двамата играчи. Играчът, който е бил избран, получава нотификация за това от сървъра. На конзолата на избрания играч се показва:
сървър: |
Niki vs Lucho Game started Please insert your number: |
След избора на играч сървърът стартира игра и известява играчите да въведат четири различни цифри. Известяването се появява дотогава докато се въведат точно четири различни цифри. Двамата играча по едно и също време въвеждат своите цифри, без да се изчакват в някаква последователност.
сървър: |
Please insert your number: |
клиент: |
1234 |
сървър: |
Please make your guess: |
Сървърът запаметява цифрите на всеки играч.
След като и двамата играча са въвели своите цифри играта започва. Пръв дава своето предположение играчът които е бил избран от списъка на чакащите играчи - в случая Niki.
сървър: |
Please make your guess: |
клиент: (Niki) |
2345 |
сървър: |
Your guess: 2345 --> 1c0b Lucho’s guess: 3456 --> 2c1b Please make your next guess: |
След като сървърът получи предположението на съответния играч, сравнява предположението с цифрите на противника и връща резултата на играча (брой крави и брой бикове). Играчът чака докато противникът му даде предположение и отново дойде неговият ред. Предположението на противника и резултата от него се визуализират по подходящ начин, например в дясната страна на същия ред, на който е било предположението на играча. Играчите се редуват докато един от тях познае правилната комбинация от цифри на противника. За игра от двама играчи Lucho и Niki конзолите могат да изглеждат примерно по този начин:
Niki:
Free Players: 0)(wait for another player to choose you) 1)Krasi 2)Nakov 3)Boris 4)Dimityr Choose player: 0
Lucho vs Niki Game started Please insert your number: 9876 Please make your guess: 1892 1c1b Lucho’s Guess: 3456 0c1b Please make your guess: 7654 0c1b Lucho’s Guess: 2347 1c0b Please make your guess: 1234 0c4b
Game end. You win! |
Lucho:
Free Players: 0)(wait for another player to choose you) 1)Krasi 2)Niki 3)Nakov 4)Boris 5)Dimityr Choose player: 2
Lucho vs Niki Game started Please insert your number: 1234 Niki’s Guess: 1892 1c1b Please make your guess: 3456 --> 0c1b Niki’s Guess: 7654 --> 0c1b Please make your guess: 2347 --> 1c0b Niki’s Guess: 1234 --> 0c4b
Game end. Winner - Niki |
При всеки ход от играта всеки играч дава своето предположение, вижда резултата от сравнението предоставен от сървъра и изчаква противника си да даде неговото предположение, след което играе следващия си ход.