Курсов проект № 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

При всеки ход от играта всеки играч дава своето предположение, вижда резултата от сравнението предоставен от сървъра и изчаква противника си да даде неговото предположение, след което играе следващия си ход.