Slnečná pyramída: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
|||
(6 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 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 153: | 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 === | ||
Riadok 164: | Riadok 182: | ||
* druhý hráč začína v niektorom rohu, rebrík je položený vedľa ňeho, pričom ďalší rebrík o poschodie vyššie | * 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 | * 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]] | [[Súbor:IZJF layout.png|300px]] |
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