IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Игра Болтянского на Pascal, Игра Болтянского на Pascal с графикой
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: NickolsoN

Репутация: -  0  +


Помогите написать программу.
Решение задании должно садержать
1. Доказательство выигрышной стратегии для игроков
2. Реализацию игры на компьютере с соблюдением уловий
- одним игроком в игре должен быть компьютер
- начальное состояние игры, два тех игр, где оно явно не задано, должно формироваться случайным образом (случайное число выбирается из экстетического представления картинки на экране);
- после представления начального состояния, а игре должен быть запрос Кто будет ходить
первым?»;
- игра должна быть оформлена с помощью графических средств*
- игра должна иметь «Заставку» и Правила игры
- управление игрой должно осуществляться либо с помощью управляющих клавиш клавиатуры либо мышкой
- компьютер должен играть по выигрышной стратегии: либо вследствие начальных данных игры, либо, следя за ходом человека, перехватив инициативу из-за его ошибки

Игра Болтянского
Играют двое. Первый выбирает натуральное число от 2 до 9, Второй умножает это число на выбираемое натуральное число от 2 до 9, затем первый выбирает число и умножает результат на любое натуральное число от 2 до 9 и т.д. Выигрывает тот, у кого впервые получится произведение,
больше заданного положительного числа C
Выяснить при каких С существует выигрышная ситуация у первого игрока,
при каких - у второго.

помогите пожалуйста, можно и без графики

Сообщение отредактировано: NickolsoN -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: NickolsoN

Репутация: -  0  +


вот щас подлатал прогу, вывод нормально работает и нормально пишит кто выйграл, комп числа выдает случайным образом, без стратегии. Можно но ли, знаяя стратегию, отредактировать мою прогу? а насчет графики....никогда не пользовался))даже не представляю как)может вы поможете сначала со стратегией??пожалуйста=)

program boltyanskiy;
uses crt;
var
a,b,c,p,d,e:integer;
flag:boolean;

begin
repeat
clrscr;
p:=1; {prisvaivaem proizvedeniuy 1}
d:=1;
randomize;
write('Vvidite polozhitelnoe chislo C ( 0 - random C) = '); {zadaem C}
readln©;
if c=0 then
c:=random(1000);
writeln('chislo C = ',c);
write('kto hodit pervim?(1 - vi, 0 - komp) - '); {vibor pervogo hoda}
readln(a);
if a=1 then flag:=true;
repeat
if flag then begin
write('vvedite chislo ot 2 do 9 - ');
read(b);
p:=p*b;
writeln('vi vveli - ',b,', proizvedenie - ',p);
end else begin
d:=random(7)+2;
p:=p*d;
writeln('ya vvel - ',d,' ,proizvedenie - ',p); end;
flag:=not flag;
until (p>=c);
if flag then writeln('Ura!Ya viygral!') else writeln('Pozdravlyayu, vi viygrali!');
write('Esche sigraem? (1 - yes, 0 - no) - ');
read(e);
until (e=0);
end.


Сообщение отредактировано: NickolsoN -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Хорошо. Ты сделал достаточно много, чтоб я убедился, что ты умеешь работать. Но ты не выполняешь все мои просьбы, и это затрудняет разговор. Это не упрек, скорее оправдание, почему я выкладываю свой вариант. Посмотри на него и сам сделай выводы.

Обрати внимание на такие моменты..
1. Форматирование программы. Сдвиги делаются не там, где тебе кажется красивее, а по правилам. Постарайся понять их на примере моего кода. Это тебе сильно поможет в будущем при написании более длинных программ.
2. Процедуры и функции используй не только для повторяющегося кода, но и для структуризации, чтоб выделить блоки, отличающиеся по смыслу.
3. Убери CRT. Никогда не делай ClrScr без осознанной необходимости. Мне уже надоело это всем говорить, читай тут: Матрица. Суммы диоганалей паралельных главной и побочной
4. Всегда старайся все числа убрать в константы. Например, тут есть числа 2 и 9. Вроде бы, они не должны меняться. На самом же деле может оказаться, когда ты придешь сдавать эту прогу препу, что он скажет: "хорошо, молодой человек, вы справились; а теперь та же задача для пределов 5 и 28..." И ты станешь ползать по всей программе, выискивая двойки и девятки..

Теперь по поводу стратегии.. Хорошо, я не буду убирать из своей проги алгоритм выигрышной стратегии. Постарайся с ним разобраться. Тебе придется это сделать, так как в задании есть вопрос: при каких С есть выигрышная стратегия. Задавай вопросы, если будет что-то неясно )).

const
d1= 2;
d2= 9;
Name: array [false..true] of string=(' I','You');
OfName: array [false..true] of string=(' My','Your');

var
c,m,n: LongInt;
Player: boolean; // false=computer, true=user


function AI: integer; // Artificial Intellect
var
d,e: LongInt;
begin
d:=c;
repeat
e:=(d-1)div n+1;
d:=(d-1)div(d2*d1)+1
until e<=9;
if e<2 then e:=2;
AI:=e
end;

function ManualMove: integer;
var
m: integer;
begin
Write('Make your move (',d1,' through ',d2,') : ');
ReadLn(m);
ManualMove:=m
end;

begin
repeat
WriteLn('Well, let''s play!');
Write('Enter the goal (0 for random) : ');
ReadLn©;
if c=0 then c:=Random(10000);
WriteLn('The goal is now set to ',c);
Write('Who moves first? 0 for computer (yes, that''s me!)), 1 for you : ');
ReadLn(m);
Player:=m=0;
n:=1;
while n<c do begin
Player:=not Player;
if Player then m:=ManualMove else m:=AI;
n:=n*m;
WriteLn(OfName[Player],' move was ',m,', the number is now ',n);
end;
WriteLn(Name[Player],' win!');
Write('Wanna play more? 0 for No, 1 for Yes: ');
ReadLn(m)
until m=0
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
NickolsoN   Игра Болтянского на Pascal   4.12.2010 3:25
Unconnected   И нафига тут графика вообще, интересно.. ну, обосн…   4.12.2010 3:31
NickolsoN   И нафига тут графика вообще, интересно.. ну, обос…   4.12.2010 3:52
Unconnected   Со стратегией наврал я.. наверное, выигрышная стра…   4.12.2010 4:14
Lapp   Игра Болтянского Играют двое. Первый выбирает нат…   4.12.2010 13:48
NickolsoN   Болтянский - хороший математик. Его самого я поч…   4.12.2010 14:04
Lapp   мне нужен не отткомпилированный файлик .pas,которы…   4.12.2010 15:20
-TarasBer-   > Со стратегией наврал я.. наверное, выигрышная…   4.12.2010 15:52
Unconnected   Почему бы и нет, наверное выиграю. Какая разница, …   4.12.2010 15:56
RathaR   Lapp, а то что твоя прога разрешает умножать на ед…   4.12.2010 16:50
Lapp   Lapp, а то что твоя прога разрешает умножать на ед…   4.12.2010 17:01
Unconnected   Может, в этом секрет выигрышной стратегии :rolley…   4.12.2010 16:54
-TarasBer-   > Почему бы и нет, наверное выиграю. Какая разн…   4.12.2010 16:56
NickolsoN   короче с 5 вечера, до почти 1часа ночи пытался уло…   4.12.2010 21:36
Lapp   вот скелет проги написалХорошо, это совсем другой …   5.12.2010 5:00
NickolsoN   вот щас подлатал прогу, вывод нормально работает и…   5.12.2010 19:12
Lapp   Хорошо. Ты сделал достаточно много, чтоб я убедил…   6.12.2010 9:18
Lapp   Так. Кажется, я придумал, как объяснить эту интуи…   7.12.2010 14:41
NickolsoN   Lapp, спасибо ВАМ !вот сидел алгоритм ваш пыта…   7.12.2010 1:49
Lapp   массиви строк, принимающие значение тру и фолс?Да.…   7.12.2010 5:13
NickolsoN   Lapp, вы гений!! столь развернутый ответ д…   8.12.2010 22:29
Lapp   Lapp, вы гений!! столь развернутый ответ д…   9.12.2010 20:07
TarasBer   Кстати, известная идея - все возможные позиции раз…   9.12.2010 14:59
NickolsoN   Lapp, извините!в личке баловать больше не буду…   9.12.2010 20:19
Lapp   Какая тебе нужна графика? турбо-паскалевская? Ес…   9.12.2010 20:43


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 3.05.2024 3:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name