Нужен кого нить, кто возьмётся за написание этой задачки, точнее кода для неё. Естественно не бесплатно, и желательно по быстрее. Вот условие:
Разработать программу, моделирующую игру "Кости". Играющий называет любое число в диапазоне от 2 до 12 и ставку, которую он делает в этот ход. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6 ("бросает кубик", на гранях которого цифры от 1 до 6). Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка. Ставка проиграна, если не имеет место ни одна из описанных ситуаций. В начальный моменту играющего 100 очков. В программе должно присутствовать графическое изображение поверхности кубика при каждом ходе игрока.
Давно не работал в Паскале, задачка вроде не сложная, но вспомнить все это дело надо + сейчас сессия, поэтому помочь скоро не получится)
Воть подобных ответов уже много услышал((( самому к ссесии это надо(
Quote (Evgen)
И есть вопрос по задаче а если выпадет 7 то что?
Получается проиграл. хотя можно в большую сторону её приписать, ну если это будет легче с технической точки зрения, но а если одинаково реализуется, то лучше пускай будет проиграл.
Quote (Evgen)
попробовать алгоритм накидать без графического изображений.
Как набросок? ну попробуй, хуже явно не будет)
Сообщение отредактировал KCEHOFOHT - Среда, 18.05.2011, 18:37
program kubik; uses crt; var och,k1,k2,st,ch,prov,ig,tem3:integer; tem1,tem2:string; {och-ochki k1-kost1 k2-kost2 st-stavka ch-cheslo} begin clrscr; och:=100; ig:=0; repeat begin repeat Write('Vvedite cheslo='); readln(tem1); Val(tem1,ch,prov);
if prov <> 0 then Writeln('Nevernoe cheslo') else If ch > 1 Then If ch < 13 Then begin Writeln('Chelo prinato'); prov:=0; end else begin Writeln('Chelo bolishe 12'); prov:=1; end else begin Writeln('Cheslo menshe 2'); prov:=1; end;
if prov <> 0 then Writeln('Nevernoe cheslo') else If ch < 13 Then begin Writeln('Stavka prinata'); prov:=0; end else begin Writeln('Bolshe bolishe ochkov'); prov:=1; end;
until prov=0; writeln;
k1:=random(6)+1; write('Kost1 = ');Writeln(k1); writeln; Readln; k2:=random(6)+1; write('Kost2 = ');Writeln(k2); writeln; Readln; If (K1+k2) < 7 then Begin If st < 7 then Begin if ch = (k1+k2) then och:=och+4*st else och:=och+st; end else begin och:=och-st; end; end else begin If st > 7 then Begin if ch = (k1+k2) then och:=och+4*st else och:=och+st; end else begin och:=och-st end; end;
Writeln; Write('Vasi jcki = '); writeln(och); Writeln;Writeln; if och < 0 then begin ig:=1; writeln('Vi proigrali');end else begin tem3:=0; repeat writeln; write('Hotite igrati dalse nagmite Y eli net to nagmite N = '); Readln(tem2); if tem2 = 'y' then begin ig:=0;tem3:=1; end else begin if tem2 = 'n' then begin ig:=1;tem3:=1; end else begin Writeln('Nepravelnai otvet') end;
Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка.
Вот это условие несколько иначе у тя выполняется чем должно быть, а остальное вроде норм)
Я выбираю число 5 делаю ставку 10 выпадает 1 и 1 , то есть 2 по условию должно быть
Quote (KCEHOFOHT)
Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку
то есть я должен выиграть, и должно быть 100+10=110 очков На деле же, выходит что у меня 90 очков. Скрин прилагаю.
Добавлено (18.05.2011, 22:43) --------------------------------------------- Это условие
Quote (KCEHOFOHT)
Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка.
и другие условия если не угадываю число выполняются нормально.
Добавлено (18.05.2011, 22:46) --------------------------------------------- Я так понял 7 ты приравнял как больше или равно семи. В этом случае, условие :
Quote (KCEHOFOHT)
Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку
у меня очков 120 я выбираю число 4 делаю ставку 10 выпадает 5 и 2 , то есть сумма 7 то есть я не угадал и должно отняться 10 очков, но они прибавляются и у меня становится 130
то есть противоположное условие этому условию:
Quote (KCEHOFOHT)
Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку.
Добавлено (18.05.2011, 22:52) --------------------------------------------- Воопшем видно проблема в условии если загадано число меньше 7ми.
Добавлено (18.05.2011, 22:54) --------------------------------------------- То же самое когда выпало 8, ну я про последний случай, вместо 7 выпало 8 тож самое, ну эт я к тому что числа разделил ты норм)
program kubik; uses crt; var och,k1,k2,st,ch,prov,ig,tem3:integer; tem1,tem2:string; {och-ochki k1-kost1 k2-kost2 st-stavka ch-cheslo} begin clrscr; och:=100; ig:=0; repeat begin repeat Write('Vvedite cheslo='); readln(tem1); Val(tem1,ch,prov);
if prov <> 0 then Writeln('Nevernoe cheslo') else If ch > 1 Then If ch < 13 Then begin Writeln('Chelo prinato'); prov:=0; end else begin Writeln('Chelo bolishe 12'); prov:=1; end else begin Writeln('Cheslo menshe 2'); prov:=1; end;
if prov <> 0 then Writeln('Nevernoe cheslo') else If ch < 13 Then begin Writeln('Stavka prinata'); prov:=0; end else begin Writeln('Bolshe bolishe ochkov'); prov:=1; end;
until prov=0; writeln;
k1:=random(6)+1; write('Kost1 = ');Writeln(k1); writeln; Readln; k2:=random(6)+1; write('Kost2 = ');Writeln(k2); writeln; Readln; If (K1+k2) < 7 then Begin If ch < 7 then Begin if ch = (k1+k2) then och:=och+4*st else och:=och+st; end else begin och:=och-st; end; end else begin If ch > 7 then Begin if ch = (k1+k2) then och:=och+4*st else och:=och+st; end else begin och:=och-st end; end;
Writeln; Write('Vasi ocki = '); writeln(och); Writeln;Writeln; if och < 0 then begin ig:=1; writeln('Vi proigrali');end else begin tem3:=0; repeat writeln; write('Hotite igrati dalse nagmite Y eli net to nagmite N = '); Readln(tem2); if tem2 = 'y' then begin ig:=0;tem3:=1; end else begin if tem2 = 'n' then begin ig:=1;tem3:=1; end else begin Writeln('Nepravelnai otvet') end;
end;
until tem3=1; end;
end; until ig=1;
readln;
end.
Сообщение отредактировал Evgen - Среда, 18.05.2011, 23:27