Slnečná pyramída: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace  | 
				|||
| (21 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
| Riadok 1: | Riadok 1: | ||
{|  | {|  | ||
|Autori:      || '''  | |Autori:      || '''Zoltán Imre, Filip Jančík'''    | ||
|-  | |-  | ||
|Študijný odbor:   || Aplikovaná   | |Študijný odbor:   || Aplikovaná informatika || 3. Bc.  ('''2018''')    | ||
|}  | |}  | ||
| Riadok 15: | Riadok 15: | ||
'''Cieľ hry:'''  | '''Cieľ hry:'''  | ||
Hráčom je umožnené vytvoriť si vlastné pravidlá pomocou priložených objektov. K hre   | Hráčom je umožnené vytvoriť si vlastné pravidlá pomocou priložených objektov. K hre je pridaný vlastný návrh.  | ||
'''Prečo?'''    | '''Prečo?'''    | ||
# Hra je vytvorená pre milovníkov spoločenských hier, ako aj pre fanúšikov seriálu Rick and Morty.  | # Hra je vytvorená pre milovníkov spoločenských hier, ako aj pre fanúšikov seriálu Rick and Morty.  | ||
# Cieľom projektu bolo vytvorenie spoločneskej hry, ktorá sa dá prispôsobiť   | # Cieľom projektu bolo vytvorenie spoločneskej hry, ktorá sa dá prispôsobiť osobitným návrhom hráčov.  | ||
'''Ako ?'''  | '''Ako ?'''  | ||
| Riadok 26: | Riadok 26: | ||
* Hracia plocha je vytvorená z preglejky, vyrezaná laserom.  | * Hracia plocha je vytvorená z preglejky, vyrezaná laserom.  | ||
* Ďalšie časti hry sú vytvorené 3D tlačou.  | * Ďalšie časti hry sú vytvorené 3D tlačou.  | ||
__TOC__  | __TOC__  | ||
| Riadok 35: | Riadok 36: | ||
* vyrezanie hracej plochy z preglejky pomocou lasera  | * vyrezanie hracej plochy z preglejky pomocou lasera  | ||
* tlač komponentov 3D tlačiarňou  | * tlač komponentov 3D tlačiarňou  | ||
* vytvorenie   | * vytvorenie návrhu na hru  | ||
* softvérové testovanie hry (NetBeans - Java)  | * softvérové testovanie hry (NetBeans - Java)  | ||
| Riadok 41: | Riadok 42: | ||
Hra je inšpirovaná seriálom Rick and Morty, konkrétnejšie časťou seriálu. Hlavnými postavami hry sú  | Hra je inšpirovaná seriálom Rick and Morty, konkrétnejšie časťou seriálu. Hlavnými postavami hry sú  | ||
Phoenix Person a Bird Person. Modely postavičiek a hracie kocky sme vytvorili pomocou 3ds Max a Mudbox  | Phoenix Person a Bird Person. Modely postavičiek a hracie kocky sme vytvorili pomocou 3ds Max a Mudbox:  | ||
[[Súbor:IZJF 3ds.png|200px]][[Súbor:IZJF mudbox.png|200px]]  | [[Súbor:IZJF 3ds.png|200px]][[Súbor:IZJF mudbox.png|200px]]  | ||
Rebríky a cieľ sme vytvorili v softvéri Blender  | |||
Rebríky a cieľ sme vytvorili v softvéri Blender:  | |||
[[Súbor:IZJF ladder.png|213px]][[Súbor:IZJF podium.png|300px]]  | [[Súbor:IZJF ladder.png|213px]][[Súbor:IZJF podium.png|300px]]  | ||
[[Súbor:IZJF coin.png|  | Mincu sme vytvorili v softvéri OpenSCAD:  | ||
[[Súbor:IZJF coin.png|200px]]  | |||
Hracia plocha(prvá úroveň) v softvéri LibreCad:  | |||
[[Súbor:IZJF libre.png|400px]]  | |||
=== Testovanie návrhov ===  | === Testovanie návrhov ===  | ||
| Riadok 67: | Riadok 76: | ||
Druhý hráč má teda rýchlejšiu postavu, priemernú 'rýchlosť' sme vypočítali podľa pravdepodobností krokov:  | Druhý hráč má teda rýchlejšiu postavu, priemernú 'rýchlosť' sme vypočítali podľa pravdepodobností krokov:  | ||
[[Súbor:  | [[Súbor:IZJF p1.jpg|500px]]  | ||
[[Súbor:IZJF p2.jpg|500px]]  | |||
Hráča sme teda postavili približne na polovicu celej cesty. Napísali sme program, ktorý simuluje našu hru a podľa podielov výhier sme vytvorili konečnú hru.  | Hráča sme teda postavili približne na polovicu celej cesty. Napísali sme program, ktorý simuluje našu hru a podľa podielov výhier sme vytvorili konečnú hru.  | ||
[[Súbor:IZJF 2.jpg|  | [[Súbor:IZJF 2.jpg|500px]]  | ||
<source lang="java">  | <source lang="java">  | ||
| Riadok 80: | Riadok 92: | ||
         int finish = 56;  |          int finish = 56;  | ||
         int p1Start = 1;  |          int p1Start = 1;  | ||
         int p2Start =   |          int p2Start = 32;  | ||
         boolean p1Begins = false;  |          boolean p1Begins = false;  | ||
| Riadok 135: | Riadok 147: | ||
         //if second player -> return difference  |          //if second player -> return difference  | ||
         int difference = Math.abs(die1 - die2);  | |||
        return difference;  | |||
     }  |      }  | ||
| Riadok 141: | Riadok 154: | ||
         return p1Pos >= p2Pos;  |          return p1Pos >= p2Pos;  | ||
     }  |      }  | ||
}  | |||
</source>  | </source>  | ||
'''Zdrojové kódy:'''  | |||
Java tester:   | |||
[[Médiá:DTV_Chase_Statistics.java|Chase Statistics.java]]  | |||
OpenSCAD:   | |||
[[Médiá:IZFJ_coin.scad|Minca.scad]]  | |||
LibreCAD:   | |||
[[Médiá:IZFJ_pyramid.zip|Pyramída.zip]]  | |||
3D:   | |||
[[Médiá:IZFJ_ladder.obj|Rebrík.obj]]   | |||
[[Médiá:IZFJ_finish.obj|Cieľ.obj]]   | |||
[https://drive.google.com/open?id=1zWIk6J6dC_X9VamdkmAyeXo3BcPpDKjt Figúrky a kocka]  | |||
=== Výsledok ===  | === Výsledok ===  | ||
Vytvorená hra je rozšíriteľná ďalšími vlastnými komponentmi a ľahko uskladniťeľná vďaka jej modulárnosti.    | Vytvorená hra je rozšíriteľná ďalšími vlastnými komponentmi a ľahko uskladniťeľná vďaka jej modulárnosti.  | ||
Z testovania hry Chase sme získali hodnoty:  | |||
* naháňaný hráč začína na 32. políčku, spolu s cieľom je celkom 56 políčok  | |||
* druhý hráč začína v niektorom rohu, rebrík je položený vedľa ňeho, pričom ďalší rebrík o poschodie vyššie  | |||
* pri zavedení týchto pravidiel a po simulácii 10 miliónov hier sme zistili, že naháňaný hráč vyhráva 49% hier  | |||
[[Súbor:IZJF layout.png|300px]]  | |||
Legenda: Zelená - naháňaný hráč, Oranžová - druhý hráč, Červená - cieľ, Sivá - rebríky  | |||
[[Category:DTV2018]]  | [[Category:DTV2018]]  | ||
Aktuálna revízia z 11:12, 29. máj 2018
| Autori: | Zoltán Imre, Filip Jančík | |
| Študijný odbor: | Aplikovaná informatika | 3. Bc. (2018) | 
Opis projektu

Projekt:
Spoločenská hra inšpirovaná americkým animovaným sci-fi seriálom Rick and Morty. Hra obsahuje hraciu plochu, dve figúrky a ďalšie časti.
Cieľ hry:
Hráčom je umožnené vytvoriť si vlastné pravidlá pomocou priložených objektov. K hre je pridaný vlastný návrh.
Prečo?
- Hra je vytvorená pre milovníkov spoločenských hier, ako aj pre fanúšikov seriálu Rick and Morty.
 - Cieľom projektu bolo vytvorenie spoločneskej hry, ktorá sa dá prispôsobiť osobitným návrhom hráčov.
 
Ako ?
- Hracia plocha je vytvorená z preglejky, vyrezaná laserom.
 - Ďalšie časti hry sú vytvorené 3D tlačou.
 
Analýza
- vytvorenie návrhu hracej plochy pomocou softvéru LibreCAD
 - vytvorenie modelov k ďalším komponentom hry pomocou softvérov 3ds Max a Blender
 - vyrezanie hracej plochy z preglejky pomocou lasera
 - tlač komponentov 3D tlačiarňou
 - vytvorenie návrhu na hru
 - softvérové testovanie hry (NetBeans - Java)
 
Popis riešenia
Hra je inšpirovaná seriálom Rick and Morty, konkrétnejšie časťou seriálu. Hlavnými postavami hry sú Phoenix Person a Bird Person. Modely postavičiek a hracie kocky sme vytvorili pomocou 3ds Max a Mudbox:
Rebríky a cieľ sme vytvorili v softvéri Blender:
Mincu sme vytvorili v softvéri OpenSCAD:
Hracia plocha(prvá úroveň) v softvéri LibreCad:
Testovanie návrhov
Na testovanie zložitejších návrhov sme použili softvér NetBeans 8.2 a programovací jazyk Java. V softvéri sme vytvorili cyklus na viaceré testovanie a podľa podielu výhier sme ďalej menili parametre a pravidlá hry, napr. číslo štartovacieho políčka (handycap pre hráča) alebo pravidlá pri hodoch kockou. Pravdepodobnosti hodených hodnôt sme zahrnuli do tabuľky.
Návrh hry "Chase - Honba"
Ide o naháňačku, kde jeden hráč je bližšie postavený k cieľu. Druhý hráč ho musí dobehnúť (chytiť) pred cieľom. Obaja sa pohybujú v smere hodinkových ručičiek. Každý hráč hádže dvoma kockami, ale kroky sa vypočítavajú osobitne:
- Prenasledovaný hráč sa posúva o rozdiel hodnôt na kockách (0 až 5) a v hre začína ako prvý
 - Druhý hráč sa posúva o väčšiu hodnotu na dvoch kockách (0 až 6)
 
Druhý hráč má teda rýchlejšiu postavu, priemernú 'rýchlosť' sme vypočítali podľa pravdepodobností krokov:
Hráča sme teda postavili približne na polovicu celej cesty. Napísali sme program, ktorý simuluje našu hru a podľa podielov výhier sme vytvorili konečnú hru.
/* Gametype Tester: Chase  */
public static void main(String[] args) {
        int tests = 1000000;
        int finish = 56;
        int p1Start = 1;
        int p2Start = 32;
        boolean p1Begins = false;
        int p1Wins = 0;
        int p2Wins = 0;
        for (int i = 1; i <= tests; i++) {
            int p1Pos = p1Start;
            int p2Pos = p2Start;
            //while Player#1 is behind or Player#2 haven't reached finish
            while (true) {
                if (p1Begins) {
                    p1Pos += Dice(1);
                    if (Over(p1Pos, p2Pos)) {
                        p1Wins++;
                        break;
                    }
                    p2Pos += Dice(2);
                    if (p2Pos >= finish) {
                        p2Wins++;
                        break;
                    }
                } else {
                    p2Pos += Dice(2);
                    if (p2Pos >= finish) {
                        p2Wins++;
                        break;
                    }
                    p1Pos += Dice(1);
                    if (Over(p1Pos, p2Pos)) {
                        p1Wins++;
                        break;
                    }
                }
            }
            System.out.println("TEST #" + i + ":\t" + p1Pos + "-" + p2Pos + "\t(Score: " + p1Wins + "-" + p2Wins + ")\n");
        }
        System.out.println("Final Score: " + p1Wins + " - " + p2Wins);
    }
    public static int Dice(int player) {
        Random rnd = new Random();
        int die1 = rnd.nextInt(6) + 1;
        int die2 = rnd.nextInt(6) + 1;
        //if first player -> return bigger value
        if (player == 1) {
            int biggerValue = (die1 > die2) ? die1 : die2;
            return biggerValue;
        }
        //if second player -> return difference
        int difference = Math.abs(die1 - die2);
        return difference;
    }
    public static boolean Over(int p1Pos, int p2Pos) {
        return p1Pos >= p2Pos;
    }
}
Zdrojové kódy:
Java tester: Chase Statistics.java
OpenSCAD: Minca.scad
LibreCAD: Pyramída.zip
3D: Rebrík.obj Cieľ.obj Figúrky a kocka
Výsledok
Vytvorená hra je rozšíriteľná ďalšími vlastnými komponentmi a ľahko uskladniťeľná vďaka jej modulárnosti. Z testovania hry Chase sme získali hodnoty:
- naháňaný hráč začína na 32. políčku, spolu s cieľom je celkom 56 políčok
 - druhý hráč začína v niektorom rohu, rebrík je položený vedľa ňeho, pričom ďalší rebrík o poschodie vyššie
 - pri zavedení týchto pravidiel a po simulácii 10 miliónov hier sme zistili, že naháňaný hráč vyhráva 49% hier
 
Legenda: Zelená - naháňaný hráč, Oranžová - druhý hráč, Červená - cieľ, Sivá - rebríky




