Slnečná pyramída: Rozdiel medzi revíziami
Zo stránky SensorWiki
| Bez shrnutí editace | |||
| (30 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''')   | ||
| |} | |} | ||
| == Opis projektu == | == Opis projektu == | ||
| [[Súbor:IZJF Title.jpg|center|800px]] | |||
| '''Projekt:''' | '''Projekt:''' | ||
| Riadok 13: | 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 25: | Riadok 27: | ||
| * Ďalšie časti hry sú vytvorené 3D tlačou. | * Ďalšie časti hry sú vytvorené 3D tlačou. | ||
| __TOC__ | __TOC__ | ||
| Riadok 39: | 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 45: | 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: | [[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: | [[Súbor:IZJF ladder.png|213px]][[Súbor:IZJF podium.png|300px]] | ||
| [[Súbor: | 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 73: | 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: | [[Súbor:IZJF 2.jpg|500px]] | ||
| <source lang="java"> | <source lang="java"> | ||
| Riadok 86: | 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 141: | Riadok 147: | ||
|          //if second player -> return difference |          //if second player -> return difference | ||
|          int difference = Math.abs(die1 - die2); | |||
|         return difference; | |||
|      } |      } | ||
| Riadok 147: | 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









