У вас есть персонаж, обладающий рядом и статов.
Напишите программу по заданным условиям:
1. Персонаж имеет набор статов: strength, dexterity,
intelligence, wisdom, charisma. Каждая стата имеет свой
запас.
1
Домашнее задание № 9
Значения запасов каждой статы должны быть случайны
– в пределах от 60 до 80 и быть представлены в списке
stats = []:
stats = []
for i in range(5):
r = random.randint(60, 80)
stats.append(r)
2. В начале игры пользователю предоставляется
возможность однократно повысить одну стату на
случайное количество единиц – от 5 до 15:
select = int(input('Select: '))
select -= 1
stats[select] += random.randint(5, 15)
Обратите внимание, что повышая одну стату на
сгенерированное число, все остальные должны
уменьшиться на случайное значение в пределах от 5 до 15:
for i in range(len(stats)):
if i == select:
continue
stats[i] -= random.randint(5, 15)
2
Домашнее задание № 9
3. Персонаж обладает набором скилов: fireball, lightning,
silence, fire ward.
Использование каждого из них отнимает разное
количество единиц статов, а именно:
Атрибуты
Fireball 12 15 28 10 5
Lightning 7 13 15 30 10
Silence 23 10 12 7 18
Fire Ward 20 23 14 6 17
Занесите эти данные в список, чтобы в
дальнейшем воспользоваться ими в игре:
fireball = [12, 15, 28, 10, 5]
lightning = [7, 13, 15, 30, 10]
...
3
Домашнее задание № 9
4. Предоставьте пользователю возможность использовать
скилы, например, по нажатию f применяется Fireball,
l – Lightning и т. д. После применения какой-либо
из запас статов будет уменьшаться,
согласно приведенной выше таблице.
Рассмотрим следующий пример:
1. Было Stats: 70 64 63 80 65.
2. Применили Fireball: 12 15 28 10 5.
3. Стало Stats: 58 49 35 70 60.
Следите за тем, чтобы элементы в списке
stats=[] не стали отрицательными.
Program R1;
Var n:integer;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
readln(n);
if n>0 then n:=n+1 else
n:=abs(n mod 2) ; {примечание-остаток будет положительным)
writeln(n);
close(input);
close(output);
end.
2 задача
Program R1;
Var n,l:integer;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
readln(n);
if (n mod 10)>(n div 10) then writeln('2>1') else
if (n mod 10)<(n div 10) then writeln('2<1') else
if (n mod 10)=(n div 10) then writeln('2=1');
close(input);
close(output);
end.
Буду работать на примере с языком программирования С++, но почти также работают и другие языки.
Пункт 1/*тип_массива*/ /*название_массива*/[/*количество_элементов*/] - статический массив.
Напримерint arr[5];
int arr[arrMaxValue] = {0}; // всё заполняется нулями
Пункт 2Напримерchar yourName[numberSymbolOfName]; // массив символов
Пункт 3Напримерfor(int i = 0; i < sizeof(yourName) / sizeof(char); i++) {
cin >> yourName[i]; // 'I', 'v', 'a', 'n'
}
sizeof(yourName) / sizeof(char) определит размер массива.
Пункт 4for(int j = 0; j < sizeof(yourName)/sizeof(char); j++) {
std::cout << yourName[j] << ' '; // I v a n
}
Пункт 5for(int i = 0; i < sizeof(arr)/sizeof(int); i++) {
std::cin >> arr[i];
if((arr[i] % 2) == 0) {
Sum += arr[i];
}
}
Пункт 6for(int i = 0; i < sizeof(arr)/sizeof(int); i++) {
std::cin >> arr[i];
if(arr[i] == 20) {
std::cout << "yep!" << ' ';
break; // так как одна двадцатка есть и больше не надо, выходим из цикла
}
}