МБ
Максим Берёзкин

Помогите с кодом в Delphi, пожалуйста!

Мне нужно написать программу "Игровой автомат". Я написал такой код. Но есть проблема. Я не могу вставить строчку else sum:=sum-100; что бы при отсутствии моих комбинаций у меня вычиталось 100$... Мне предложили оператор case...to, но я не смог в нем разобраться. Помоги пожалуйста! То что много begin end, это я фигней страдал.. ) Если посчитаете что они не нужны то будет даже удобнее. Просто программа и так работает, только нужно что бы еще -100$ вычитало

procedure TForm1.Button1Click(Sender: TObject);
var x,y,z:integer;
begin
VK_RETURN;
randomize;
x:= random(5)+1;
y:= random(5)+1;
z:= random(5)+1;
begin
if ((x=1) and (y=1) and (z=1)) then sum:= sum+100*7;
end;
begin
if ((x=1) and (z=1)) then sum:= sum+100*6;
end;
begin
if ((x=2) and (y=2) and (z=2)) then sum:= sum+100*4;
end;
begin
if ((x=3) and (y=3) and (z=3)) then sum:= sum+100*10;
end;
begin
if ((x=3) and (z=3)) then sum:= sum+100*8;
end;
begin
if ((x=4) and (y=4) and (z=4)) then sum:= sum+100*3;
end;
begin
if ((x=5) and (y=5) and (z=5)) then sum:= sum+100*2;
end;
begin
if ((x=2) and (y=4) and (z=5)) then sum:= sum+100*9;
end;

Спасибо, Алексей. Помогло) Цикл - это слишком легко)

КС
Кирилл Суворов

if ((x=1) and (y=1) and (z=1)) then sum:= sum+100*7
else if ((x=1) and (z=1)) then sum:= sum+100*6
else if ((x=2) and (y=2) and (z=2)) then sum:= sum+100*4
else if ((x=3) and (y=3) and (z=3)) then sum:= sum+100*10
else if ((x=3) and (z=3)) then sum:= sum+100*8
else if ((x=4) and (y=4) and (z=4)) then sum:= sum+100*3
else if ((x=5) and (y=5) and (z=5)) then sum:= sum+100*2
else if ((x=2) and (y=4) and (z=5)) then sum:= sum+100*9
else sum := sum - 100;

Наталья Гусева
Наталья Гусева

У вас чето много ендов лишних, убирайте их нафиг.
if ((x=1) and (y=1) and (z=1)) then
sum:= sum+100*7;
else if ((x=1) and (z=1)) then
sum:= sum+100*6;
else if ((x=2) and (y=2) and (z=2)) then
sum:= sum+100*4;
else ...
else
sum := sum - 100;

Хотя ваш код какой-то тяжелый, если честно. Я бы завел массив вида
(зн1, зн2, зн3, флаги, вознагр)
Для вашего:
(1,1,1, fl1+fl2+fl3, 100*6 ),
(1,0,1, fl1+fl3, 100*4 ),
(2,2,2, fl1+fl2+fl3, 100*4 ),
В цикле пробегал бы его, если подходит - то все ок. Если в цикле не нашли - минус сто.

Se
Serega

// case - это элементарно!
randomize;
x:= random(5)+1;
y:= random(5)+1;
z:= random(5)+1;
// пусть x-сотни, y - десятки, z - единицы, тогда
N:=100*x+10*y+z;
case N // тип N - ordinal
111:sum+100*7; // аналогично if ((x=1) and (y=1) and (z=1)) then sum:= sum+100*7;
121,131,141,151:sum+100*6; // if ((x=1) and (z=1)) then sum:= sum+100*6;
// и т. д.
else sum:=sum-100;
end;

Похожие вопросы
Delphi. Проверьте код пожалуйста!
Delphi, помогите с кодом
Помогите объяснить код в Delphi:
Помогите с кодом Delphi
Помогите мне с кодом по Delphi.
Помогите из С# Перевести код в Delphi.
Помогите написать програмный код в Delphi. +
Помогите прокомментировать код DELPHI
Люди хорошо знающие Delphi помогите с кодом
Помогите с кодом в Delphi, пожалуйста