Day 10 & Day11

Day 10
Huomasimpa "ongelman" joka estää helposti saamasta kuvan klikkausta peliareenalla. Tästä johtuen pitää alkaa kehittää omaa graphics item luokkaa joka perustuu kuitenkin normaaliin QGraphicsItem luokkaan. Ongelmana on vielä kuitenkin castaus muihin samantasoisiin luokkiin.

koodia siis aloitettu ja tässä ote singaalin lähetyksestä joka tehdään kun kuvaa klikataan vasemmalla napilla.

  1. void mousePressEvent(QGraphicsSceneMouseEvent *eventti){
  2. if(eventti->button()==Qt::MouseButton::LeftButton)
  3. emit clicked();
  4. }

Day 11

Day 9

GameRender aloitettu. Muitten ohjelmointiprojektien takia peliohejlmointi jäi vähemmälle tänään.

Day 8

Tänään taas on korjattu Script Enginen vikoja sekä valmistettu chat rendereri.
ChatRenderissä voi säätää chatin "voimassaoloaikaa" joka luetaan settingsistä.
Alla koodit chatin jonoon lisäyksestä sekä sieltä poistosta.

  1. void gamez::AddToChat(QString what){
  2. QTimer *buffer=new QTimer(this);
  3. connect(buffer,SIGNAL(timeout()),this,SLOT(DeleteChat()));
  4. ChatLines.push_back(what);
  5. Settings->beginGroup("Chat");
  6. buffer->start(Settings->value("ChatDisplayTime").toInt());
  7. ChatTimers.push_back(buffer);
  8. Settings->endGroup();
  9. ChatNeedRender=true;
  10. }
  11. void gamez::DeleteChat(){

Day 7

Käytännössä nyt on viikko kehitelty peliä, itse peliä ei kuitenkaan vielä ole laisinkaan päästy tekemään, käytännössä mitä nyt on
- Menu
- Ääni interface
- UpperNaviRender
- Objektiluokat
- Script Engine

Tänään tein reilun kasan korjauksia script engineen, nyt funktioden kutsuminenkin toimii loistavasti.
Mitään suurempaa tänään ei ole ehtinyt kuitenkaan tehdä.

Day 7

Tänään kehittelin ääniä peliin tai oikeastaan äänen toistinta. Tein classin Sound joka käyttää hyväkseen Phonon frameworkkia toistaakseen ääniä.
Sound classeja luodaan yksi kappala per ääni ja se poistuu äänen päättyessä muistista, Sound classit säilötään vectoriin (QVector).
Phonon mahdollistaa monen eri tiedostoformaatin toiston.

  1. #include "Sound.h"
  2.  
  3. Sound::Sound(QString media)
  4. {
  5. audioOutput=new Phonon::AudioOutput(Phonon::MusicCategory,this);
  6. mediaObject=new Phonon::MediaObject(this);
  7. Phonon::createPath(mediaObject,audioOutput);
  8. mediaObject->stop();

Day 6

Tänään luotiin menun osia, jotka sisälsivät mm. menun grafiikat, ja niiden conffit.

Menu funktion koodi:

  1. void gamez::Menu(bool itemchange){
  2. if(itemchange){
  3. int size=MenuItems.size();
  4. for(int i=size-1;i>=0;i--){
  5. Scene->removeItem(MenuItems[i]);
  6. delete MenuItems[i];
  7. MenuItems.remove(i);
  8. }
  9. for(int i=0;i<size;i++){
  10. if(i==MenuIndex){
  11. QGraphicsPixmapItem * _it=Scene->addPixmap(QPixmap(Settings->value("ItemBGHIImage").toString()));
  12. _it->setPos(100,i*75+50);
  13. _it->setZValue(2);
  14. MenuItems.push_back(_it);
  15.  
  16. }
  17. else{

Day 5

Mapit päätetään laittaa zip teidostoihin jotka unzip.exe purkaa.
alla map.zip:in specsit

  1. map.zip
  2. -file map.ini
  3. -folder resources
  4. --file BGImage
  5. --file ...
  6. -folder script
  7. --file init.script
  8. --file ...
  9. -file readme

Day 4

Assemblyjen takia muutamia päiviä on jäänyt väliin pelin osalta, mutta nyt taas koodaaminen jatkuu.

Tänään map tiedostosta (ini) osataan jo ladata eri talojen tiedot ja siirtää ne objecteiksi.
Myös HouseObject luokkaan päivitettiin script OnActive ja DeActive metodit.
Alla MapScripti

  1. [General]
  2. BGImage="testibg.png"
  3.  
  4. [houses]
  5. 1\x=100
  6. 1\y=100
  7. 1\btm=militia.png
  8. 1\armor=0
  9. 1\hp=1000
  10. 1\actived="SetObjectProperties(militia_properties);"
  11. 1\deactived="SetObjectProperties(0);"
  12.  
  13. 2\x=800
  14. 2\y=200
  15. 2\btm=militia.png
  16. 2\armor=0
  17. 2\hp=1000

UpperNaviRender

  1. void gamez::UpperNaviRender(bool create){
  2. if(create){
  3. Scene->addPixmap(QPixmap(Settings->value("UpperNaviBGImage").toString()));
  4.  
  5. res1 = Scene->addText(Lang->value("res1").toString()+" "+Engine->evaluate("res1VAL").toString());
  6. res1->setPos(60,15);
  7. res1->setDefaultTextColor(QColor("white"));
  8.  
  9. res2 = Scene->addText(Lang->value("res2").toString()+" "+Engine->evaluate("res2VAL").toString());
  10. res2->setPos(160,15);
  11. res2->setDefaultTextColor(QColor("white"));
  12.  
  13. res3 = Scene->addText(Lang->value("res3").toString()+" "+Engine->evaluate("res3VAL").toString());
  14. res3->set

Day 3

Nyt on jo luotu objektiluokat sekä mapin lataus ini tiedostosta on suuniteltu kuntoon.

luotiin HouseObject : GameObject ja GameObject luokat jotka toimivat pelin itemeinä.
Alustavasti tein paljon funktioita joilla saadaan tietoja objektista.
Merkitsin myös kaikki funktiot (paitsi "rakentimen") Q_INVOKABLE macrolla jotta niitä voidaan kutsua scripteistä, joita tullaan käyttämään mapeissä.

alla oleva class diagram kertoo vähän mitä mikäkin luokka tähän mennessä osaa
diagram

Syndicate content