Adrian-Gabriel ZĂTREANU (78385) - 👾Arena Wars👾

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Arena Wars este un joc turn based in care doi playeri se lupta intre ei.

Scopul este sa il invingi pe adversar si acesta sa ramana astfel fara puncte de viata.

Am pornit de la ideea jocurilor 1vs1 de strategie in care fiecare player detine niste carti cu diferite abilitati pe care le poate folosi in fiecare tura.

Cred ca este util deoarece este un joc in care trebuie sa analizezi ce face intotdeauna adversarul si astfel sa iei o decizie in privinta asta, deci este si distractiv si iti si imbunatateste abilitatile de decizie.

Reguli joc

Fiecare player isi alege o clasa cu care va juca. In functie de clasa aleasa, fiecare player va avea abilitati diferite.

Jucatorii vor incepe cu H puncte de viata (HP) si S stamina (SP). Acest numar e variabil in functie de clasa aleasa.

Scopul este sa il aduci pe adversar la 0 puncte de viata.

Jocul decide random (dupa un coin toss) cine incepe primul.

Apoi, fiecare player, pe rand (fiind turn based), alege o actiune pe care o va face. Lista de actiuni cuprinde:

  • Normal attack - scade inamicului X puncte de viata, unde X depinde in functie de clasa aleasa. De exemplu, clasa Warrior va scadea mai multa viata decat o clasa orientata pe spelluri, precum Mage
  • Special ability - spell diferit in functie de clasa care foloseste mai multe stamina points decat un attack simplu; de exemplu, clasa Warrior scade mai multa viata inamicului folosind aceasta abilitate, in timp ce clasa Priest isi umple viata
  • Ultimate ability - cea mai puternica abilitate a fiecarei clase; consuma tot SP-ul
  • Rest - fiecare jucator are optiunea de a se odihni in loc sa isi foloseasca abilitatile. Odihnindu-se, jucatorului i se vor umple puncte de viata si de stamina

Jocul se va folosi de un buzzer pentru a avea sunete cand sunt folosite diverse abilitati, sau cand un jucator castiga.

Descriere generală

Hardware Design

Lista de piese:

  • PCB
  • Pachetul cu componente de baza
  • LCD SPI de 2.8” cu Touchscreen - Controller ILI9341 și XPT2046 (240×320 px)
  • Convertor de Niveluri Logice Bidirecțional pe 8 Biți TXS0108E
  • Fire mamă-mamă
  • Fire mama-tata
  • Fire tata-tata
  • LM1086 pentru a oferi LCD-ului 3.3V
  • Butoane
  • Difuzor SparkFun 0.25W
  • Placuta de test

Schema electrica

Software Design

Fiecare clasa incepe cu health points si stamina points mentionate in paranteza mai jos, si are urmatoarele abilitati specifice clasei. In plus, fata de cele mentionate, fiecare player are optiunea de rest, care umple 4HP si 4SP.

Fiecare Normal Attack consuma 3SP, pe cand Special Attack-urile consuma 5SP. Ultimate ability-ul foloseste tot SP-ul.

Clasele din care jucatorii isi pot alege sunt urmatoarele:

  • Warrior (35HP, 10SP)
    • Normal Attack: Deal 6 damage to the enemy.
    • Special Attack: [Bash] Deal 8 damage to the enemy, with a 20% chance to deal double damage.
    • Ultimate Ability: [Overpowered Strike] Massively damage the enemy and deal 15 damage to them.
  • Mage (30HP, 12SP)
    • Normal Attack: Deal 4 damage to the enemy.
    • Special Attack: [Fireball] Throw a fireball to the enemy for 8 damage. Enemy burns for 2 damage next turn.
    • Ultimate Ability: [Deep Freeze] Deal 10 damage to the enemy. Enemy is frozen and cannot perform any action the next turn.
  • Priest (25HP, 15SP)
    • Normal Attack: Deal 5 damage to the enemy.
    • Special Attack: [Lesser Heal] Heal yourself for 8 HP.
    • Ultimate Ability: [Transcendence] Restore yourself to full HP and restore 6 SP.
  • Paladin (30HP, 12SP)
    • Normal Attack: Deal 5 damage to the enemy.
    • Special Attack: [Holy Shock] Deal 5 damage to the enemy and heal yourself for 5 HP.
    • Ultimate Ability: [Judgment] Take the holy power into your own hands. Deal 10 damage to the enemy. Stun enemy for one turn.
  • Warlock (20HP, 12SP)
    • Normal Attack: Deal 8 damage to the enemy and lose 2 HP.
    • Special Attack: [Siphon Life] Siphon the life out of the enemy, whilst healing you for 6 HP and dealing 6 damage to them. Can heal over MAX HP.
    • Ultimate Ability: [Lord Jaraxxus] Lose half of your current HP and deal 15 damage to the enemy.

Pentru dezvoltare software am folosit:

  • Sublime Text
  • WinAVR
  • HIDBootFlash

Cod: adrianzatreanu_arenawars_cod.zip

Pentru randomness este folosit un timer.

Codul este impartit in mai multe fisiere:

  • Biblioteca ili9341* - API-ul LCD-ului
  • arena.c - fisierul principal
  • screens.c - ecranele, meniul, UI-ul jocului
  • abilities.c - functiile pentru abilitati pentru fiecare clasa

Fisierul principal este arena.c, unde este functia main care initializeaza butoanele, timerul, etc, si care apeleaza functia de meniu.

Apoi, sunt apelate functiile din fisierul screens.c, cum ar fi meniul, regulile, sau chiar functia de Play.

Cand a inceput jocul, si UI-ul este desenat, fiecare player alege o abilitate care este apelata din fisierul abilities.c.

Rezultate Obţinute

Cel mai bine pot arata rezultatele obtinute cu un filmulet si niste poze.

Rezultatul este un joc care a fost dus la capat, care contine un meniu si un UI pentru joc, cu 5 clase jucabile, exact cele descrise mai sus. Un video demonstrativ este postat mai jos.

Concluzii

A fost un proiect challenging, pe care am stat multe ore, atat pe partea de hardware cat si pe partea de software, luandu-mi mult sa fac LCD-ul sa mearga.

Consider ca a meritat efortul, dupa timpul depus am ajuns sa am ceva concret, ceva de care sa fiu mandru.

Nu am mai lucrat inainte nici cu Arduino sau ceva similar, deci a fost nevoie sa depun un efort mai mare decat colegii care au mai lucrat inainte cu asta.

Imi doream de mult sa fac un proiect cu interfata grafica si consider ca acesta a iesit chiar misto!

Gameplay video

Un video demonstrativ. Enjoy! https://www.youtube.com/watch?v=jeX2GIqjFQQ

Download

Arhiva completa, cu poze si cod: adrianzatreanu_arenawars.zip

Jurnal

13 aprilie: Am ales proiectul si am primit aprobarea din partea asistentului.

20 aprilie: Am adaugat descrierea proiectului, titlul, regulile jocului si lista de piese.

4 mai: Am adaugat schema electrica a proiectului si am updatat lista de piese.

10 mai: Am terminat placuta de baza.

15 mai: Am adaugat si butoanele si LCD-ul pe placuta de test si sunt functionale.

17 mai: Am implementat meniul principal, de selectie a regulilor/de a juca jocul.

20 mai: Am implementat UI-ul principal pentru joc.

23 mai: Finalizat software-ul.

Bibliografie/Resurse

pm/prj2018/rbarbascu/adrianzatreanu.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0