Поделитесь своими знаниями, ответьте на вопрос:
У вас есть персонаж, обладающий рядом и статов. Напишите программу по заданным условиям: 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=[] не стали отрицательными.
{ FreePascal 2.6.4}
program test;
uses
crt;
var
a, b, c, d : integer;
f : longint;
procedure swap (var x : integer; var y : integer);
var z : integer;
begin
z := x;
x := y;
y := z;
end;
function nod (m, n : integer) : integer;
begin
while m<>n do begin
if m>n
then
m:=m-n
else
n:=n-m;
end;
nod := m;
end;
function max (a,b : integer) : integer;
begin
if a>b
then max := a
else max := b;
end;
function min (x, y, z : integer) : integer;
var m : integer;
begin
m := x;
if y<m then m := y;
if z<m then m := z;
min := m;
end;
function mypow (a, b : integer) : integer;
var e, f : integer;
begin
f := 1;
for e:=1 to b do f := f*a;
mypow := f;
end;
function fact(a : integer) : longint;
var
i : integer;
res : longint;
begin
res := 1;
for i := 1 to a do res := res*i;
fact := res;
end;
begin
clrscr;
writeln('Test of function SWAP');
write('Input A: ');
readln(a);
write('Input B: ');
readln(b);
swap(a, b);
writeln('A=', a, ', B=', b);
writeln;
writeln('Test of function NOD');
write('Input A: ');
readln(a);
write('Input B: ');
readln(b);
c := nod(a, b);
writeln('NOD(', a, ',', b, ')=', c);
writeln;
writeln('Test of function MAX');
write('Input A: ');
readln(a);
write('Input B: ');
readln(b);
c := max(a, b);
writeln('MAX(', a, ',', b, ')=', c);
writeln;
writeln('Test of function MIN');
write('Input A: ');
readln(a);
write('Input B: ');
readln(b);
write('Input C: ');
readln(c);
d := min(a, b, c);
writeln('MIN(', a, ',', b, ',', c, ')=', d);
writeln;
writeln('Test of function POW');
write('Input A: ');
readln(a);
write('Input B: ');
readln(b);
c := mypow(a, b);
writeln('POW(', a, ',', b, ')=', c);
writeln;
writeln ('Test of function FACT (not large than 12!)');
write('Input A: ');
readln(a);
f := fact(a);
writeln(a, '!=', f);
writeln;
readkey;
end.