2010-12-03 4 views
0

Нужна помощь с назначением летнего теннисного программного задания:python tennis табло

В этой проблеме вы предоставите интерфейс и дисплей для теннисного матча. Вот правила забивания теннисного матча.

• Есть два игрока. Назовем их Игроком 1 и Игроком 2.

• Игроки разворачивают мяч взад и вперед, и победитель каждого ралли получает очко.

• Игра представляет собой последовательность из нескольких точек. Каждый игрок начинает с 0 очков («Любовь все»), а игра выигрывается игроком, который добивается следующего:
- у игрока 4 очка; и
- у игрока есть еще 2 очка, чем у другого игрока.

• У англичан есть умная система нумерации для очков внутри игры.
Игрок с 0 очками имеет «Любовь». Если они имеют 1 очко, они называют это «15». 2 балла - «30»; 3 балла, «40». Если оба игрока связаны с 3 очками или более, они называют его «Двойка».

Если у обоих игроков 3 или более очков, но они не привязаны, то, как говорят, у игрока, у которого есть преимущество, есть «Преимущество».

• Набор представляет собой последовательность игр.
Победитель первого игрового игрока:
6 игр с участием не менее чем 2-х игр, чем у другого игрока; или
- 7 игр.

В случае, когда оба игрока связаны в 6 играх за штуку, правила изменяются для того, как забиваются 13-я и решающая игра. Эта игра называется тай-брейком, и ее выигрывает первый игрок, который накапливает 7 очков с 2 очками, чем другой игрок. В тай-брейке британская нумерация не используется; вместо этого счет начинается с 0-0, а точки подсчитываются в возрастающей числовой последовательности.

• Совпадение представляет собой последовательность множеств. В мужских турнирах победителем матча является первый игрок, который достиг 3-го набора. В женщинах победителем является первый игрок, который достиг 2 комплектов.

Заполните функцию points_str (p1, p2), которая, учитывая p1, количество точек для Player 1 и p2, количество очков для Игрока 2, возвращает строку, которая представляет британский эквивалент оценки Игрока 1 , Если у игрока 1 есть преимущество, верните «Adv», а если у игрока 2 есть преимущество, верните «-».

Примеры,
• points_str (0, 2) должен возвращать «Любовь».
• points_str (3, 1) должен возвращать «40».
• points_str (3, 3) должен возвращать «Двойка».
• points_str (5, 4) должен возвращать «Adv».
• points_str (4, 5) должен возвращать «-».

Напишите программу Python, которая имитирует теннисный матч. После того, как пользователь запросит имена каждого игрока и их пола, программа отобразит табло после каждой точки.

Чтобы определить, кто победит в следующей точке, ваша программа вызовет импортированную функцию umpire() , которая вернет целое число 1, если игрок 1 выиграет очко или 2, если победит игрок 2. Вы можете предположить, что umpire() никогда не возвращает ничего, кроме целого числа 1 или целого числа.

Программа должна заканчиваться, когда любой игрок выигрывает матч. Выведите окончательный табло и сообщение, в котором описывается, кто победит. Следуйте формату вывода, как показано в образцах.

Ниже приведен мой код для этой функции. Он только вычисляет победителя первого пункта и отображает его. Как я правильно зацикливаю его, чтобы он в конечном счете вычислил победителя игры, установил и сравнил?

Пожалуйста, помогите мне :) Спасибо!

def points_str(p1, p2): 
    p1setscore=0 
    p2setscore=0   # setting starting parameters for scorekeeping for games and 
    p1gamescore=0 
    p2gamescore=0 

male_setmax=3 
female_setmax=2  # setting parameters for maximum amount sets/games for male/female rules 
gamemax=7 


umpire() 
if umpire()== 1: 
     p1gamescore=p1gamescore+1 

else: 
     p2gamescore=p2gamescore+1 

print p1gamescore, p2gamescore 
+0

Вы пробовали использовать этот код? Что происходит? – aaronasterling 2010-12-03 05:26:51

+0

Я получил входную часть, где он запрашивает имя и пол игроков. Затем я включил некоторые другие варианты ввода. Этот код просто вычисляет победителя первого пункта и печатает его. Счет, если игрок 1 выигрывает, равен (1,0), который должен вернуть 15-любовь. Я не знаю, как его зацикливать, поэтому он вычисляет и возвращает победителя игры, устанавливает и, в конечном счете, соответствует. – 2010-12-03 05:28:44

ответ

1

Написать функцию, которая возвращает, если кто-то (возможно, кто) выигрывает, а другая функция, которая проверяет оценки игроков и возвращает строку оценка ситуации. Петля через вызов umpire(), накапливая баллы, получая и выдавая ситуацию, пока кто-то не победит (подсказка: while not winnerfunc(...):).

0

Подумайте об этом с точки зрения состояний. Есть шесть государств:

  1. нормальной (оценка [0123] - [0123], за исключением 3-3)
  2. двойки раунда (оценка 3-3)
  3. игрока 1 победу (оценка 4- [012 ] или оценка 5-3)
  4. игрок 2 победы (оценка [012] -4 или счет 3-5)
  5. двойки игрок 1 преимущества (оценка 4-3)
  6. двойка игрока 2 преимущества (оценка 3- 4)
Смежные вопросы