Seminarie 2

02 februari 2010 av joabo448

29/1/2010
Det känns fortfarande lite konstigt att en funktion måste returnera något, vi får ett fult ”nil” efter att vi skriver ut resultatet på t.ex. uppgiften med rangordningen. Det skulle vara trevligt att kunna returnera ”void” eller liknande.

I uppgiften om väder stötte vi på ett problem då textfilen hade fält som var tomma. Med vår metod som vi använde för ”football” uppgiften innebär det att en medlemsvariabel kan få ett ”förskjutet” värde, då tomma fält hoppas över. Lösningen blev att använda ”insert”, och kolla om värdet var i korrekt format. Var det i fel format så kunde vi använda ”insert” för att ersätta det med t.ex. en tom sträng istället. ”Insert” flyttar automatiskt på efterföljande element så ordningen blir korrekt.

2/2/2010
På parsningsuppgiften så försökte vi använda ”uniq!” på en array med objekt för att bli av med dubbletter. Det fungerande inte som vi hade tänkt, det fungerade inte alls. Men det gjorde inte så mycket eftersom det var mest felhantering som egentligen inte borde uppstå.

3/2/2010
Vi provade att använda DOM parser. Vi kom fram till att om man ska använda DOM eller SAX beror lite på vad man vill uppnå, ibland kanske DOM passar bättre och ibland SAX beroende på uppgiften. DOM läser in allting först och lägger upp en trädstruktur för att lätt få fram information. SAX är mer rad för rad. DOM kan även användas med XPATH som gör det ännu lättare att hämta information. Har man till exempel en gigantisk textfil kanske det känns onödigt att använda DOM om man bara vill ändra på något i början av filen, då kanske SAX passar bättre.
Kodexempel:

require 'rexml/document'
src = File.open"note2.xml"
doc = REXML::Document.new src
REXML::Document
REXML::Element
r = doc.root
puts r.name


def print_tree(elem,indent=0)
elem.elements.each do |subelem|
puts " "*2*indent + subelem.name
print_tree(subelem,indent+1)
end
end

Seminarie 1

22 januari 2010 av joabo448

19/1/2010

Ruby-mode i Emacs var svårt att få igång. Hade även glömt att installera Ruby. Svårt att använda för tillfället, måste använda ruby-load-file varje gång vi ändrat något i .rb filen. På sektionen om iteratorer fastnade vi på att vi skrev ”0..value” istället för det vi egentligen ville ha vilket var ”0…value”, det föregående gav oss fel värde. Loopen gick ett steg längre än vi hade tänkt, eftersom ”value” var längden på en array. I en annan uppgift om iteratorer så fastnade vi på hur man använder block. Ska kolla upp detta med labbassistent.

20/1/2010

Idag fick vi hjälp att få ett ordentligt Ruby-mode i Emacs, så att vi slapp använda ruby-load-file hela tiden och bara kunde kompilera som vanligt istället. Problemet var ganska löjligt enkelt, då det var en parentes för mycket i .emacs filen som definierade var ruby filerna för Emacs fanns. Vi upptäckte också att för att visa en array på ett sätt som vi var vana vid (t.ex. [1, 2, 3]) så var vi tvunga att använda ”return”. Skrev vi ”print” eller ”puts” så skrev tolken ut alla element i vår array, vilket gjorde det svårt att se vad den innehöll och hur det var strukturerat.

22/1/2010

Idag fick vi problem med enhetstestningen. Kunde inte köra vår testfil på grund av ett fel i filen vi skulle testa. Problemet var att vi använde stor bokstav för ett variabelnamn, och Ruby tolkade det som att det var en modul saknades (eftersom det inte är en modul, det är en variabel).

T.ex:
Test = Repeat.new(7)
Det korrekta sättet var förstås:
test = Repeat.new (7)

Vi fick också hjälp med block av labbassistenten idag. Problemet var att vi försökte skicka in ett block som en inparameter, t.ex:
repeat.each(do puts "Hej" end)
Sättet man ska skicka block såg istället ut så här:
repeat.each do puts "Hej" end
Parenteserna behövdes alltså inte. Vi fick lära oss idag att man egentligen inte behöver använda parenteser så ofta i Ruby. Nu tolkar iallafall vår kod blocket som ett block, och koden fungerar korrekt.

Mer grafik

09 december 2009 av joabo448

Spenderade två timmar idag på att skapa grafik till startmeny, ”game over” och ”level complete” skärmar.

Städat kod

09 december 2009 av joabo448

Idag har vi spenderat 2 timmar på att städa upp kod och lägga till diverse kommentarer. Vi har också skapat en ”makefile”. Imorgon ska vi lägga till några bilder sedan är projektet redo att demonstreras.

Ett sammanhängande spel

08 december 2009 av joabo448

Idag har vi spenderat 5 timmar på projektet. Boss mönster implementerat. Fixat ett problem där ”bullets” inte försvann om inga fiender finns på skärmen. ”Game Over” och ”Level Complete” finns nu vid respektive resultat. Imorgon ska vi skriva en ”makefile” för att underlätta kompilering för utomstående. Vi ska också skapa ett sätt att välja level på (kanske beroende på vilka text filer som finns!).

Junk

07 december 2009 av joabo448

Idag har vi spenderat 6 timmar på projektet. Vi förbättrade animationen som sker när man använder ”pull” så att den rotarer snyggare runt mittpunkten på skopan. Vi har också fixat det så att när fiendeskepp dör så sprängs dem i mindre bitar (som man kan plocka upp). Vi har även skapat asteroider som också sprängs i mindre bitar. En enklare huvudmeny där man kan välja antal spelare (en eller två) finns också.

Skopan lastad!

04 december 2009 av joabo448

Idag har vi spenderat 5 timmar på att fixa skopan och hur den fungerar. Man kan nu dra till sig fiender, dem hamnar i skopan och man kan plocka upp dem. Så länge man har last i skopan så kan man skjuta, och man skjuter iväg det man plockat upp. När man använder ”pull” så snurrar objekten i skopan. Objekten i skopan reagerar på fiender och båda dör om dem kolliderar. Vi ska fixa det så att dem bara exploderar om skopan är full eller om man inte kan plocka upp ett objekt av den storleken.

Vi har också optimerat en del kod så att den ser bättre ut och gör färre kollar under spelets gång.

Mer grafik

03 december 2009 av joabo448

Två timmar har gått åt att skapa grafik åt fienden vi ska implementera imorgon.

Mera Pull

03 december 2009 av joabo448

Idag spenderade vi 4 timmar på att implementera skopans egenskap att dra till sig fiender. Vi fick hjälp av en labbassistent att felsöka, och upptäckte att problemet var att vi skapade två instanser av ett objekt som vi egentligen bara ville ha en instans av, och metoden vi använde oss av skrev över den vi faktiskt ville använda. När det var löst så använde vi oss av lite matematik för att få till en snygg gravitation mot skopans mittpunkt när den är aktiv.

Imorgon ska vi gå vidare till att få skopan att plocka upp fiender (än så länge dör dem bara vid kontakt) och använda dem som begränsad ammunition. Hinner vi så tänker vi också skapa en boss.

Image och Pull

02 december 2009 av joabo448

Idag har vi spenderat sammanlagt 6 timmar på projektet. Vi har bland annat förbättrat bildhanteringen. Vi omorganiserade våra arv genom att ta bort klassen ”Sprite” och överlåta dess funktioner till ”Destructable”. Resten av tiden har gått åt till att försöka implementera/felsöka vår ”pull” funktion, som ska dra objekt till spelarskeppet. Vi har stött på en del problem som vi inte förstår, och ska be en labbassistent om hjälp imorgon.