Operácie

Slnečná pyramída: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentDVPS (diskusia | príspevky)
DVPS (diskusia | príspevky)
Bez shrnutí editace
 
(38 medziľahlých úprav od 2 ďalších používateľov nie je zobrazených)
Riadok 1: Riadok 1:
{|
{|
|Autori:      || '''Ján Mrkvička, Jozef Kuleha'''  
|Autori:      || '''Zoltán Imre, Filip Jančík'''  
|-
|-
|Študijný odbor:  || Aplikovaná mechatronika || 2. Ing.  ('''2013''')  
|Študijný odbor:  || Aplikovaná informatika || 3. Bc.  ('''2018''')  
|}
|}


== Opis projektu ==
== Opis projektu ==
[[Súbor:IZJF Title.jpg|center|800px]]
'''Projekt:'''
'''Projekt:'''
Spoločenská hra s aztéckou tematikou.


'''Príbeh hry:'''
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.
Píše sa 15. storočie nášho letopočtu. Rozzúrený Huitzilopochtli (Boh Slnka, vojny a obetavosti) pripravuje svoje vojsko na zničenie ľudského sveta. Quetzalcoatl (tvorca ľudského života) verbuje odvážnych dobrodruhov, ktorých úlohou je šialeného Boha zastaviť. Za odmenu sa z hrdinu stane nesmrteľný Boh trinástich nebies.


'''Cieľ hry:'''
'''Cieľ hry:'''
Dostať sa na vrchol pyramídy.


'''---'''
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?'''  


# Prečo práve tento projekt, aký má zmysel, komu bude osožný...  
# Hra je vytvorená pre milovníkov spoločenských hier, ako aj pre fanúšikov seriálu Rick and Morty.
# Druhy '''riadok'''
# Cieľom projektu bolo vytvorenie spoločneskej hry, ktorá sa dá prispôsobiť osobitným návrhom hráčov.


'''Ako ?'''
'''Ako ?'''


Sem príde podrobný návod na výrobu.
* Hracia plocha je vytvorená z preglejky, vyrezaná laserom.
* Ďalšie časti hry sú vytvorené 3D tlačou.
 
 
__TOC__
 
== 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:
 
[[Súbor:IZJF 3ds.png|200px]][[Súbor:IZJF mudbox.png|200px]]
 
 
Rebríky a cieľ sme vytvorili v softvéri Blender:
 
[[Súbor:IZJF ladder.png|213px]][[Súbor:IZJF podium.png|300px]]
 
 
Mincu sme vytvorili v softvéri OpenSCAD:
 
[[Súbor:IZJF coin.png|200px]]
 
 
Hracia plocha(prvá úroveň) v softvéri LibreCad:


* Popisat proces premeny napadu na hmotny (funkcny) produkt
[[Súbor:IZJF libre.png|400px]]
* Vyspecifikovat potrebny material (uprednostnujeme vlastnych alebo existujucich komponentov, v pripade potreby vieme pomoct)<BR> vystupom bude zhmotneny napad a aj navod - krok za krokom pre reprodukciu produktu




[http://www.example.com link title]
=== Testovanie návrhov ===


[[Súbor:MojObrazok2.jpg|center|300px]]
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.


[[Médiá:MojZdrojak.c]]
''' 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:


'''Použité zdroje:'''
* 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)


* Zoznam použitej literatúry, vrátane katalógových údajov (datasheet), internetových odkazov a pod.
Druhý hráč má teda rýchlejšiu postavu, priemernú 'rýchlosť' sme vypočítali podľa pravdepodobností krokov:


__TOC__
[[Súbor:IZJF p1.jpg|500px]]
[[Súbor:IZJF p2.jpg|500px]]


== Analýza ==


V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje,  
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.
ktoré sú potrebné na úspešné vyriešenie projektu. Napríklad:


* popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)
[[Súbor:IZJF 2.jpg|500px]]
* obrázok zapojenia vývodov použitej súčiastky
* odkaz na katalógový list
* priebehy dôležitých signálov
* este jedna polozka




== Popis riešenia ==
<source lang="java">
/* Gametype Tester: Chase  */
public static void main(String[] args) {


Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru
        int tests = 1000000;
(nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.
        int finish = 56;
        int p1Start = 1;
        int p2Start = 32;
        boolean p1Begins = false;


'''Schéma zapojenia snímača'''
        int p1Wins = 0;
[[Súbor:Zapojenie.png]]
        int p2Wins = 0;


[[Súbor:Example.jpg]]
        for (int i = 1; i <= tests; i++) {


Pozn.: Názov obrázku musí byť jedinečný, uvedomte si, že Obr1.jpg už pred vami skúsilo
            int p1Pos = p1Start;
nahrať už aspoň 10 študentov.
            int p2Pos = p2Start;


[[Súbor:MojObrazok.jpg|center|250px]]
            //while Player#1 is behind or Player#2 haven't reached finish
            while (true) {


=== Algoritmus a program ===
                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);
    }


Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili.
    public static int Dice(int player) {
Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu.  
        Random rnd = new Random();
Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
        int die1 = rnd.nextInt(6) + 1;
        int die2 = rnd.nextInt(6) + 1;


Vyberte podstatné časti zdrojového kódu, použite na to prostredie ''source'':
        //if first player -> return bigger value
        if (player == 1) {
            int biggerValue = (die1 > die2) ? die1 : die2;
            return biggerValue;
        }


<source lang="c">
        //if second player -> return difference
/* A nezabudnite zdroják hojne komentovať  */
        int difference = Math.abs(die1 - die2);
        return difference;
    }


int main(void) {
    public static boolean Over(int p1Pos, int p2Pos) {
   
        return p1Pos >= p2Pos;
    printf("Hello, World!\n");
     }
     return(0); 
}
}
</source>
</source>


Nezabudnite však nahrať aj kompletné zdrojové kódy vášho programu!
'''Zdrojové kódy:'''


Zdrojový kód: [[Médiá:Serial.h|serial.h]] a [[Médiá:Pip.c|main.c]]
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]


[[Médiá:MojProgram.c|program.c]]




=== Výsledok ===
=== Výsledok ===


Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video
Vytvorená hra je rozšíriteľná ďalšími vlastnými komponentmi a ľahko uskladniťeľná vďaka jej modulárnosti.
a zhodnotenie ako ste spokojní s výsledkom,  
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
 


Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.
[[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?

  1. Hra je vytvorená pre milovníkov spoločenských hier, ako aj pre fanúšikov seriálu Rick and Morty.
  2. 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