Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > C++ задача (стек) , help!


Автор: DiEgnoz 27.5.2006, 15:23
Создать имитацию игры "однорукий бандит". Например, при нажатии кнопки "Enter" происходит "вращение" трех барабанов (естественно, количество вращений каждого из них выбирается случайно), на которых изображены разные значки; и если выпадает определенная комбинация, то игрок получает какой-то выигрыш. 
 

Автор: Friackazoid 27.5.2006, 16:01
Уважаемый учасник, прочитайте вниметельней красные букафы вверху экрана, Подумайте и уточните среду разработки. smile  

Автор: MAKCim 28.5.2006, 10:16
барабан представляем как ленту с изображениями, их количество фиксировано
одно вращение барабана - переход вправо или влево на одну позицию на ленте, начальная позиция известна
в общем случае заводим массив из n элементов (значение i элемента - номер на i-ом барабане)
Код

class game
{
private:
    vector<size_t> positions_;      // позиции в барабанах
    size_t size_;         // количество позиций в барабане
private:
    template<char S> void rotate(size_t&);    // вращать
public:
    game(size_t size, size_t count)
        : positions_(size), size_(count) 
    {
        for (vector<size_t>::iterator i=positions_.begin();    // по умолчанию позиция 0
            i!=positions_.end(); ++i) *i=0;
    }

    size_t play(char obj);     // крутить все барабаны вправо 'R' или влево 'L'
    size_t play(const vector<char>& obj);   // i-ый барабан крутить в obj[i]
};

template<> void game::rotate<'L'>(size_t& obj)
{
    size_t pos=obj, count=std::rand();
    int k=pos-count%size_;
    if (k<0) obj=size_+k;
    else obj=k;
}

size_t game::play(char obj)
{
    for (vector<size_t>::iterator i=positions_.begin(); i!=positions_.end(); ++i)
    {
        switch (obj)
        {
            case 'R':
                rotate<'R'>(*i);
                break;
            case 'L':
                rotate<'L'>(*i);
                break;
            default: throw <какой-нибудь exception>
        }
    }
    // если positions_[0]=positions_[1]=...=positions_[positions_.size()-1] выиграли
}
  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)