Апликацијата што ќе ја развиваме е класична Slots игра како во онлајн казината.
На почетокот на прозорецот имаме 4 копчиња New Game , Exit, Spin и Add Funds
За да започнеме со играње најпрво потребно е да додадеме парички во нашиот новчаник. Тоа го правиме со кликање на копчето Add Funds каде што при клик ни отвара нова форма во која ја внесуваме сумата со која што сакаме да играме.
Во овој дел имаме DropDown мени каде што можеме да избереме колкав би ни бил влогот на секој спин. Влогот може да биде 10, 20, 50,100, 500, 1000
При кликање на спин копчето ни се прикажуваат сликите во рандом редослед каде што доколку во сите колони имаме барем по една иста слика имаме добивка инаку немаме.
При клик на ова копче ни се отвара нова форма со почетните вредности.
Ја исклучува апликацијата.
Главните податоци и функции за играта се чуваат во класата public partial class Slots : Form
која што наследува од класата Form што претставува прозорец или дијалог прозорец што го сочинува корисничкиот интерфејс на самата апликација.
Во самата класа имаме 3 properties public int Wins { get; set; }
public int amount { get; set; }
public Random random { get; set; }
. Каде што Wins
променливата ја кориситиме доколку имаме добивка т.е. доколку имаме иста слика во сите три колони.
Оваа класа има две int променливи, amount (износ на пари со кои располагаме во моментот) и wins (променлива во која се пресметува вкупната добивка од моменталната игра). Исто така има и еден објект од тип Random (ја користиме функцијата Random.Next()
за генерирање на случаен број во даден опсег).
Во конструкторот на wins
и amount
им задаваме вредност 0, го инцијалицираме Random објектот, ComboBox - от за цена на едно вртење го пополнуваме со вредности (5, 10, 20, 50, 100, 500 и 1000), на почетокот сликата на сите PictureBox – ови е иста, односно сликата Slots.jpg (Size 200х200 и SizeMode -> PictureBoxSizeMode.StretchImage). Исто така текстот во TextBox – овите се пополнува.
Со притискање на копчето Spin (со лев клик или Space), најпрво се проверува дали имаме доволно средства за да играме. Доколку немаме доволно средства со MessageBox
се испишува порака. Доколку имаме доволно средства, се генерираат 9 случајни броеви во опсег [0 – 1000), односно за секоја ќелија по еден. Потоа креираме 3 листи (кои ги претставуваат колоните) и ги додаваме броевите во нив.
Потоа се повикува функцијата newSpin(broj, PictureBox)
девет пати, по еднаш за секоја ќелија.
Оваа функција поставува слика во PictureBox – от во зависност од бројот n, односно:
- Ако n ∈ [0, 100) тогаш се паднало јаболко.
- Ако n ∈ [100, 200) тогаш се паднала цреша.
- Ако n ∈ [200, 300) тогаш се паднало грозје.
- Ако n ∈ [200, 300) тогаш се паднал ананас.
- Ако n ∈ [300, 400) тогаш се паднало грозје.
- Ако n ∈ [400, 600) тогаш се паднала диња.
- Ако n ∈ [600, 700) тогаш се паднал портокал.
- Ако n ∈ [700, 750) тогаш се паднал џекпот.
- Ако n ∈ [750, 850) тогаш се паднала банана.
- Ако n ∈ [850, 1000) тогаш се паднала јагода.
Потоа се повикува функцијата checkCurrent(Column1, Column2, Column3)
.
Оваа функција како аргументи ги прима трите колони. Како што кажавме секое овошје има свој опсег. Идејата е да провериме дали во секоја колона имаме барем по еден број кој припаѓа на ист опсег. На пример нека c1 = {219, 570, 463}, c2 = {155, 666, 209}, c3 = {444, 491, 288}. Односно:
Овде имаме добивка бидејќи во сите три колони имаме ананас, односно во сите три колони имаме по еден број кој припаѓа на опсегот [200, 300), а тоа се броевите 209
во првата, 219
во втората и 288
во третата колона. Овде исто така имаме четири дињи, но тие не даваат добивка бидејќи во втората колона нема диња.
Кога имаме добивка исто така и броиме колку пати се појавил дадена слика (овошје) бидејќи тоа влијае на добивката, колку повеќе појаувавња толку поголема добивка.
Добивката се пресметува на следниот начин : win = (n1 + n2 + n3) * spin * bonus
, каде ni е број на појавувања на слика во i – тата колона
, spin
е вредноста на вртењето и bonus
има различна вредност во зависност од големината на опсегот (помал опсег -> поголем бонус).
Најпрвин се одзема од amount вредноста на вртењето (вредноста што сме ја избрале во cbCost) а потоа се проверува за сите опсези и доколку има добивка таа се додава во променливата totalWin
(која се ресетира на 0 при ново вртење), а totalWin
се додава на amount
.