1 (изменено: Karinka93, 2012-11-08 13:24:20)

Тема: AHK: помогите сделать игру "угадай число".

Помогите написать такую програму. Я загадываю число от 1 до 10, а компьютер пытается его как можно быстрее угадать, после неправильного ответа я даю подсказку "больше" или "меньше". я смогла сделать кнопочки, но как заставить его играть не понимаю. Вот как я сделала:

Gui,Add,Button,w100 xp+100 y10,загадала!
Gui,Add,Button,w100 xp-100 yp+35,больше
Gui,Add,Text,w100 xp+100 center, 5?
Gui,Add,Button,w100 xp+100,меньше
Gui,Add,Button, w100 xp-100 yp+35,в точку!
Gui,Show
esc::Gui,Hide
^esc::Gui,Show
GuiClose:
ExitApp

А как дальше не понимаю, помогите пожалуйста

2

Re: AHK: помогите сделать игру "угадай число".

Karinka93, оформляйте код правильно.

3

Re: AHK: помогите сделать игру "угадай число".

Karinka93 пишет:

я смогла сделать кнопочки...

Как реагировать на ввод описано здесь.

Karinka93 пишет:

компьютер пытается его как можно быстрее угадать

а тут уже сложнее. Рассмотри простейшую игру(загадывать можно только 1 и 2), а затем попытайся разобрать игру с тремя числами. Это уже не столь очевидно, если что мы подскажем .

4

Re: AHK: помогите сделать игру "угадай число".

Александр_ пишет:
Karinka93 пишет:

я смогла сделать кнопочки...

Как реагировать на ввод описано здесь.

А можно подробнее?

Александр_ пишет:
Karinka93 пишет:

компьютер пытается его как можно быстрее угадать

а тут уже сложнее. Рассмотри простейшую игру(загадывать можно только 1 и 2), а затем попытайся разобрать игру с тремя числами. Это уже не столь очевидно, если что мы подскажем .

Нужно же просто среднее значение на каждом ходу выбирать!

5 (изменено: Александр_, 2012-11-08 20:56:35)

Re: AHK: помогите сделать игру "угадай число".

Karinka93 пишет:

А можно подробнее?

Нет.

Александр_ пишет:

Нужно же просто среднее значение на каждом ходу выбирать!

Это даёт гарантированный результат за наименьшее число ходов, но в среднем угадывать придётся дольше, чем при "правильном" подходе. Посмотри на игру с тремя цифрами- первый игрок загадывает число от 1 до 3 включительно, а второй отгадывает, ориентируясь на подсказки(больше/меньше). Если угадываешь с первого раза, то получаешь одно очко, если со второго, то 0 очков, а если с третьего, то -1(очко получает соперник). При твоём подходе нужно всегда выбирать двойку на первом ходу, получать подсказку и гарантированно называть правильный ответ. Но соперник тоже не дурак и двойку он загадывать не будет(или почти не будет), поэтому ты всегда будешь на нуле. А вот если ты учтёшь, что соперник почти всегда загадывает 1 или 3 и будешь иногда отходить от второй стратегии и пытаться угадать с первого раза, то в среднем будешь немного выигрывать. Это простейшая матричная игра, оптимальную стратегию легко вычислить.