Разработка игрового автомата в Blackberry - PullRequest
2 голосов
/ 07 июля 2010

Я разработчик Java-приложений для Blackberry.Я пытаюсь разработать простую логику игрового автомата.Я новичок в анимированной графике и т.д. в Blackberry.Итак, может кто-нибудь сказать мне, как спроектировать простой игровой автомат, в котором при нажатии на кнопку изображения в 3 блоках должны начать вращаться, а после его остановки призы будут отображаться в соответствии с рисунками.Так что вы можете помочь мне с некоторыми примерами или учебными пособиями о том, как это сделать ...

Редактировать: я разрабатываю это как забавное приложение, которое не связано с денежными транзакциями.Итак, любые разработчики Blackberry, плз, покажите мне, как выполнить задачу и раскрутить три изображения одним нажатием кнопки ...

Ответы [ 2 ]

3 голосов
/ 12 июля 2010

Это простой пример, но вам придется самостоятельно разбираться с декором, плавным движением и т. Д.

Допустим, у вас есть 6 изображений 70х70. Простое расширение BitmapField для рисования текущего изображения слота, половина изображения сверху и половина изображения ниже:

class SlotField extends BitmapField {
    Bitmap bmp1 = Bitmap.getBitmapResource("img1.png");
    Bitmap bmp2 = Bitmap.getBitmapResource("img2.png");
    Bitmap bmp3 = Bitmap.getBitmapResource("img3.png");
    Bitmap bmp4 = Bitmap.getBitmapResource("img4.png");
    Bitmap bmp5 = Bitmap.getBitmapResource("img5.png");
    Bitmap bmp6 = Bitmap.getBitmapResource("img6.png");

    Bitmap[] bmps = new Bitmap[] { bmp1, bmp2, bmp3, bmp4, bmp5, bmp6 };

    int mPos = 0;

    public SlotField(int position) {
        mPos = position;
    }

    public int getBitmapHeight() {
        return bmp1.getHeight() * 2;
    }

    public int getBitmapWidth() {
        return bmp1.getWidth();
    }

    protected void layout(int width, int height) {
        setExtent(getBitmapWidth(), getBitmapHeight());
    }

    int getNextPos() {
        if (mPos == bmps.length - 1) {
            return 0;
        } else
            return mPos + 1;
    }

    int getPrevPos() {
        if (mPos == 0) {
            return bmps.length - 1;
        } else
            return mPos - 1;
    }

    protected void paint(Graphics g) {
        Bitmap hImg = bmps[getPrevPos()];
        Bitmap mImg = bmps[mPos];
        Bitmap lImg = bmps[getNextPos()];
        g.drawBitmap(0, 0, 70, 35, hImg, 0, 35);
        g.drawBitmap(0, 35, 70, 70, mImg, 0, 0);
        g.drawBitmap(0, 105, 70, 35, lImg, 0, 0);
    }
}

Теперь поместите эти поля на экран и анимируйте их с помощью таймера:

class MainScr extends MainScreen {
    SlotField slot1 = new SlotField(0);
    SlotField slot2 = new SlotField(3);
    SlotField slot3 = new SlotField(5);
    boolean running = false;

    public MainScr() {
        HorizontalFieldManager hField = new HorizontalFieldManager();
        add(hField);

        hField.add(slot1);
        hField.add(slot2);
        hField.add(slot3);

        ButtonField btnRoll = new ButtonField("Roll");
        btnRoll.setChangeListener(new FieldChangeListener() {
            public void fieldChanged(Field field, int context) {
                if (!running)
                    rollSlots();
            }
        });

        add(btnRoll);
    }

    void rollSlots() {
        Timer timer = new Timer();
        final Random rnd = new Random();
        TimerTask ttask1 = new TimerTask() {
            int cycle = 0;

            public void run() {
                slot1.mPos = slot1.getNextPos();
                invalidate();
                cycle++;
                if (cycle >= 100+rnd.nextInt(6))
                    cancel();
            }
        };

        TimerTask ttask2 = new TimerTask() {
            int cycle = 0;

            public void run() {
                slot2.mPos = slot2.getNextPos();
                invalidate();
                cycle++;
                if (cycle >= 100+rnd.nextInt(6))
                    cancel();
            }
        };

        TimerTask ttask3 = new TimerTask() {
            int cycle = 0;

            public void run() {
                slot3.mPos = slot3.getNextPos();
                invalidate();
                cycle++;
                if (cycle >= 100+rnd.nextInt(6))
                    cancel();
            }
        };

        timer.schedule(ttask1, 0, 50);
        timer.schedule(ttask2, 200, 50);
        timer.schedule(ttask3, 400, 50);
    }
}

альтернативный текст http://img534.imageshack.us/img534/2172/slots.jpg

Для функциональности пользовательского интерфейса прочитайте

Дизайн пользовательского интерфейса Blackberry - настраиваемый пользовательский интерфейс?

и

Blackberry - анимация расположения полей

0 голосов
/ 07 июля 2010

Моделирование механических барабанов на игровом автомате защищено Патентом США 7452276 .На веб-странице, посвященной патентам, есть ссылки на 40 других патентов США и международных патентов, которые вам нужно будет изучить, прежде чем начинать разработку программного обеспечения.

После того, как вы получили разрешение от всех различных патентов США и международных патентов на разработкуПрограммное обеспечение, вы бы разработали длинную полосу .gif с различными изображениями, которые вы быстро перемещаете вниз в трех или более позициях.Вашему программному обеспечению придется исказить верхние и нижние края видимых частей полосы .gif, чтобы создать вид механического слота колеса.

...