Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514
1

Управление игроком: делать ходы и выводить его состояние после каждого хода

27.01.2018, 17:29. Показов 2400. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напишите программу, которая будет управлять игроком: делать ходы и выводить его состояние после каждого хода, если сами

В это задаче нужно модифицировать класс.

Добавить классу «студент» дополнительное приватное поле int energy (сытость). Метод start_game должен устанавливать начальную энергию в 100. Если сытость становится равной 0, то игрок голодает.

Добавить приватный метод void change_field(int &field, int delta), который будет увеличивать переменную field, но проверять, что она не превышает 100, и не меньше 0, и сохранять его в диапазоне [0; 100]. Мы будем использовать этот метод, чтобы держать здоровье и сытость студента в разумных пределах.

Добавить публичный метод void eat(), который позволяет студенту поесть, и увеличивает его сытость на 7, а здоровье — на 1. Данный метод не должен ничего делать, если is_alive() == false.

Добавить публичный метод void wait(), при вызвове которого студент ничего не делает, при этом у него уменьшается сытость на 3, а здоровье увеличивается на 1. Данный метод не должен ничего делать, если is_alive() == false.

Добавьте в метод show() вывод состояния переменной «сытость» по аналогии с hp.
Напишите программу, которая будет управлять игроком: делать ходы и выводить его состояние после каждого хода, если сами ходы с клавиатуры вводит игрок.

Формат входных данных
В первой строке с клавиатуры вводится имя и фамилия игрока (состоят не более чем из 50 из латинских букв), разделенные пробелами.

Во второй строке вводится натуральное число M (M ≤ 1000) — количество ходов.

В следующих M строках выводятся ходы, которые могут быть двух видов: «Wait» (ждать) и «Eat» (есть).

Формат выходных данных
Требуется вывести состояние игрока после каждого хода.
Примеры
входные данные
Hello World
2
Wait
Wait
выходные данные
Hello World: HP = 100, Energy = 097.
Hello World: HP = 100, Energy = 094.
входные данные
Steve Jobs
7
Wait
Wait
Wait
Wait
Wait
Eat
Wait
выходные данные
Steve Jobs: HP = 100, Energy = 097.
Steve Jobs: HP = 100, Energy = 094.
Steve Jobs: HP = 100, Energy = 091.
Steve Jobs: HP = 100, Energy = 088.
Steve Jobs: HP = 100, Energy = 085.
Steve Jobs: HP = 100, Energy = 092.
Steve Jobs: HP = 100, Energy = 089.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2018, 17:29
Ответы с готовыми решениями:

Посчитать количество вариантов,когда после хода я не попадаю на единицу(есть ходы:+1 +2 +3 +4)
У меня есть массив состоящий из нолей и единиц, начиная с 0 позиции в массиве посчитать количество...

Игра 2048 - исправить выбор направления хода игроком
Чувствую, что напутал что-то при выборе направления хода игроком... #include "stdafx.h" #include...

В игре после каждого хода реализовать вывод сообщения на экран
#include "stdafx.h" #include <iostream> #include <time.h> #include <cstdlib> #include <math.h>...

Если метод класса не использует состояние, то нужно ли делать его статическим?
Частенько приходится встречать методы, которые не используют состояние класса. Возникает мысль, что...

2
0 / 0 / 0
Регистрация: 09.05.2023
Сообщений: 4
31.12.2023, 00:28 2
[CPP]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <cstring> 
#include <iomanip>
using namespace std;
 
class Student {
private:
  void change_field(int &field, int delta);
  int energy;
    char name[51];
    char surname[51];
    int hp; 
public:
    void eat();
    void start_game();
    bool is_alive();
    void show();
  void wait();
}; 
 
 
int main() {
  Student my_clock;
  my_clock.start_game();
  int q;
  cin>>q;
  for (int i=0; i<q;i++) {
    char w[50];
    cin>>w;
    if (!strcmp(w,"Wait"))
      my_clock.wait();
    else if (!strcmp(w,"Eat"))
      my_clock.eat();
    my_clock.show();
  }
  return 0;
}
 
void Student::start_game() {
  cin>>this->name>>this->surname;
  this->hp=100;
  this->energy =100;
}
bool Student::is_alive() {
  if (this->hp<=0)
    return false;
  return true;
}
    
void Student::show() {
  cout<<this->name<<" "<<this->surname<<": HP = "<<setw(3)<<setfill('0')<<this->hp<<", Energy = "<<setw(3)<<setfill('0')<<this->energy<<'.'<<endl;
}
 
void Student::change_field(int &field, int delta) {
  field+=delta;
  if (field<0)
    field =0;
  else if (field>100)
    field =100;
}
void Student::eat() {
  if (this->is_alive()) {
    change_field(this->hp,1);
    change_field(this->energy,7);
  }
  return;  
}
void Student::wait() {
  if (this->is_alive()) {
    change_field(this->hp,1);
    change_field(this->energy,-3);
  }
  return;
}
0
26 / 23 / 4
Регистрация: 20.11.2023
Сообщений: 127
31.12.2023, 12:55 3
Цитата Сообщение от Pavlin234 Посмотреть сообщение
метод void change_field(int &field, int delta)
Статический?
И на будущее - нет в C++ методов. Есть функции-члены. Не душните по этому поводу перед преподавателем/кем-то вышестоящим.

Добавлено через 4 минуты
Цитата Сообщение от Pavlin234 Посмотреть сообщение
имя и фамилия игрока (состоят не более чем из 50 из латинских букв)
Вместе?

Добавлено через 4 минуты
Цитата Сообщение от Pavlin234 Посмотреть сообщение
В это задаче нужно модифицировать класс.
А какой именно? Код приложите.
0
31.12.2023, 12:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.12.2023, 12:55
Помогаю со студенческими работами здесь

Выпишите состояние списка [7, 3, 9, 4, 2, 5, 6, 1, 8] после каждого прохода алгоритма InsertionSort
Выпишите состояние списка после каждого прохода алгоритма InsertionSort.

Выпишите состояние списка после каждого прохода алгоритма BubbleSort
Выпишите состояние списка после каждого прохода алгоритма InsertionSort. 2. Выпишите...

Выпишите состояние списка [7, 3, 9, 4, 2, 5, 6, 1, 8] после каждого прохода алгоритма BubbleSort
Выпишите состояние списка после каждого прохода алгоритма BubbleSort.

2. Выпишите состояние списка [6, 2, 4, 7, 1, 3, 8, 5] после каждого прохода алгоритма MergeSort
Выпишите состояние списка после каждого прохода алгоритма MergeSort.

Определить состояние нормального выхода RS триггера после каждого тактового импульса
Помогите!!! :wall: или ткните, что почитать.

Выводить массив после каждого обмена(сортировка вставками)
Есть код сортировки простыми вставками, как выводить массив после каждой вставки? вот код...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru