Tämä on vuoden 2018 hakemistossa.
- Tästä dokumentista on myös versio tehtävän tekemiseksi Windowsissa ja XNA-kirjastolla jos joku sitä haluaa käyttää
Lumiukko komentoriviltä MonoGame + Jypeli
(Tämä tehtävä liittyy Demo 1 -viikkotehtävään.)
Luo tiedosto Lumiukko.cs
ja avaa se tekstieditoriin. Kopioi siihen mallin mukainen sisältö.
// Otetaan käyttöön Jyväskylän yliopiston Jypeli-kirjasto
using Jypeli;
/// @author Antti-Jussi Lakanen, Vesa Lappalainen
/// @version 12.1.2012
///
/// <summary>
/// Luokka, jossa harjoitellaan piirtämistä lisäämällä ympyröitä ruudulle
/// </summary>
public class Lumiukko : PhysicsGame
{
/// <summary>
/// Pääohjelmassa laitetaan "peli" käyntiin Jypeli-kirjastolle
/// tyypilliseen tapaan
/// </summary>
public static void Main()
{
using (Lumiukko peli = new Lumiukko())
{
peli.Run();
}
}
/// <summary>
/// Aliohjelmassa piirretään ja zoomataan kamera siten että
/// kenttä näkyy hyvin ruudulla.
/// </summary>
public override void Begin()
{
Camera.ZoomToLevel();
Level.Background.Color = Color.Black;
PhysicsObject p1 = new PhysicsObject(2 * 100.0, 2 * 100.0, Shape.Circle);
p1.Y = Level.Bottom + 200.0;
Add(p1);
PhysicsObject p2 = new PhysicsObject(2 * 50.0, 2 * 50.0, Shape.Circle);
p2.Y = p1.Y + 100 + 50;
Add(p2);
PhysicsObject p3 = new PhysicsObject(2 * 30.0, 2 * 30.0, Shape.Circle);
p3.Y = p2.Y + 50 + 30;
Add(p3);
}
}
Mac/Linux-käyttäjät:
- tehkää joko TIMissä:
- lukekaa kääntämisen "teoriaa" sivulta kääntäminen komentoriviltä
- loikatkaa tässä ohjauksessa tehtävään Ukon värin ja ulkonäön muuttaminen
- tehkää tehtävä TIMissä kohtaan Demo 1, lumiukko
- tai ennemmin tai myöhemmin asenna työkalut ja tee Mac/Linux-ohjeilla
Windows käyttäjät:
Lataa jypeli.zip-tiedosto ja pura sen sisällöstä kaikki *.dll
samaan kansioon Lumiukko.cs
-tiedoston kanssa. Purkamisesta: Windowsin tiedostonäkymässä voit tuplaklikata tiedostoa, jolloin voit copy-pastettaa oikeat tiedostot Lumiukon kanssa samaan paikkaan.
Kirjoita PowerShellillä (voit copy-pasteta tuon pitkän rimpsun)
csc Lumiukko.cs /reference:Jypeli.dll';'Jypeli.Physics2d.dll';'MonoGame.Framework.dll /platform:x86
HUOM! Jos ylempi ei toimi, varmista että olet noudattanut ohjeita täältä.
Komentorivillä (cmd.exe
) vastaava komento olisi
csc Lumiukko.cs /reference:Jypeli.dll;Jypeli.Physics2d.dll;MonoGame.Framework.dll /platform:x86
Käännetyn ohjelman voi ajaa kirjoittamalla komentoriville allaolevan tekstin. Syntynyt "peli-ikkuna" saadaan pois painamalla Alt-F4
.
.\Lumiukko.exe
csm.bat
Yllä esitelty kääntämiskomento on varsin pitkä ja asioiden helpottamiseksi voikin kirjoittaa kotona tiedoston csm.bat
(kuvitellaan että nimessä on lyhennetty C-sharp ja Monogame), jonka kopioi jonnekin hakemistoon joka on polussa (esimerkin tiedostolla ei tarvitse edes alkuosan polkujuttuja määritellä):
@echo off
SET ERRORLEVEL=
"C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe" %* /nologo /reference:Jypeli.dll;Jypeli.Physics2d.dll;MonoGame.Framework.dll /platform:x86 /define:WINDOWS
if ERRORLEVEL 1 goto loppu
%~n1
:loppu
Huom! Kirjoita hakemiston kohdalle sama hakemisto joka sinulla toimi HelloWorldiä tehdessä.
Tämän jälkeen kääntäminen ja samalla ajaminen (jos käännös onnistuu) onnistuu komennolla
csm Lumiukko.cs
Agoran mikroluokissa csm-komento on valmiina N:\bin
hakemistossa ja pitäisi toimia jos sinulla on N-levy mountattuna.
Ongelmana tuossa on vielä se, että jypeli.dll
pitää purkaa jokaiseen hakemistoon jossa tuota käyttää.
Vielä automaattisemman tuosta kääntämiskomennosta saa, jos Jypeli on asennettu johonkin ja kopioidaan tarvittavat .dll
tiedostot automaattisesti mukaan. Eli esimerkiksi jos Jypeli on asennettu hakemistoon
C:\Program Files (x86)\MonoJypeli\Windows
niin komentotiedosto voisi olla (vaihda komentotiedostoon oikea hakemisto):
@echo off
SET ERRORLEVEL=
SET jypelidllpath=C:\Program Files (x86)\MonoJypeli\Windows
SET monodllpath=C:\Program Files (x86)\MonoGame\v3.0\Assemblies\Windows
"C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe" %* /nologo /reference:Jypeli.dll;Jypeli.Physics2d.dll;MonoGame.Framework.dll /lib:"%monodllpath%";"%jypelidllpath%" /platform:x86 /define:WINDOWS
if ERRORLEVEL 1 goto loppu
xcopy "%monodllpath%\*.dll" /d /y >nul
xcopy "%jypelidllpath%\*.dll" /d /y >nul
%~n1
:loppu
Ukon värin ja ulkonäön muuttaminen
HUOM! Seuraavat koodinpätkät kirjoitetaan tekstieditorissa ohjelmakoodiin (eli tiedostoon Lumiukko.cs
)! Kokeile palloille erilaisia värejä. Esimerkiksi
p2.Color = Color.HotPink;
Rivin voit lisätä mihin tahansa sen jälkeen kun muuttuja p2
on esitelty. Kuitenkin ennen aliohjelman lopettavaa aaltosulkua }
. Paras paikka on siellä, missä muutenkin käsitellään p2
muuttujaa (siis ennen kuin p3
on esitelty).
Käytössä olevat valmiit värien nimet näet esimerkiksi Jypelin dokumentaatiosta tai ohjeista.
Minkä tahansa värin voit itse tehdä kutsulla tyyliin:
p3.Color = new Color(173, 255, 47, 10);
missä parametrit ovat järjestyksessä Red
, Green
, Blue
, Alpha
. Kukin arvo voi vaihdella välillä 0-255. Alpha tarkoittaa läpinäkyvyysarvoa, 0 täysin läpinäkyvä, 255 täysin läpinäkymätön.
Luonnollisesti voit vaihtaa myös taustan värin sellaiseksi kuin haluat -- kokeile.
Kokeile kirjaston ohjeiden mukaan vaihtaa alin pallo kaksi kertaa leveämmäksi. Älä muuta "pallon" korkeutta.
Piirrä ukolle silmät.
Lisätehtävä: Voimia peliin
Lisää Begin
-aliohjelman loppuun rivi (muistathan, että Begin
-metodi alkaa Begin
-rivin jälkeisestä aaltosulusta, ja päättyy vastaavasti metodin sulkevaan aaltosulkuun, eli "aliohjelman loppuun" tarkoittaa ennen sen lopettavaa aaltosulkua):
Gravity = new Vector(0, -400);
- käännä ja aja
- kokeile muita lukuja -400:n paikalle
Lumiukon käätäminen ja ajaminen MacOS:ssa
Oletetaan että VisualSudio, MonoGame ja Jypeli on asennettu ohjeiden mukaan
Lataa oheinen .zip tiedosto ja pura se. Tarvittava .zip tiedosto
Kirjoita tiedosto
Lumiukko.cs
ja tallenna se purettuun kansioonLumiuko koodi käännetään komennolla:
mcs -r:Jypeli.dll -r:Jypeli.Physics2d.dll -r:MonoGame.Framework.dll Lumiukko.cs
.exe tiedoston ajaminen onnistuu komennolla:
mono Lumiukko.exe
Lumiukon kääntäminen ja ajaminen Linuxissa
Oletetaan että Monodevelop ja Jypeli on asennettu ohjeiden mukaan
Luo ja siirry vaikkapa hakemistoon
lumiukko
omassa hakemistossasi (esimerkissä/home/vesal
)Kirjoita tiedosto
Lumiukko.cs
jollakin editorilla ja tallenna se
Mono on mulla asentanut kirjastot osoitteeseen (tarkista itseltäsi tarkka osoite)
/home/vesal/.local/share/MonoDevelop-5.0/LocalInstall/Addins/MonoDevelop.Jypeli.6.5.9/assemblies/Linux/
Tämä on aivan liian pitkä kirjoitettavaksi kääntämiskomentoihin ja siksi tehdään symbolinen linkki:
ln -s ~/.local/share/MonoDevelop-5.0/LocalInstall/Addins/MonoDevelop.Jypeli.6.5.9/assemblies/Linux/ lib
Asetetaan vielä Monodevelopin polku:
export MONO_PATH=lib
Itse kääntäminen komenolla:
mcs /r:lib/Jypeli.dll /r:lib/Jypeli.Physics2d.dll /r:lib/MonoGame.Framework.dll /r:lib/OpenTK.dll /r:lib/Tao.Sdl.dll /r:System.Numerics /r:System.Drawing Lumiukko.cs
Lumiukon tapauksessa tosin riittää vähempikin kirjastoja
mcs /r:lib/Jypeli.dll /r:lib/Jypeli.Physics2d.dll /r:lib/MonoGame.Framework.dll Lumiukko.cs
Ajaminen komennolla:
mono Lumiukko.exe
Vastaavasti kuin Windowsissa voisi kirjoittaa tälle kaikelle komentojonon vaikkapa nimelle
csm.sh
jonka sisältö olisi:#/bin/bash rm -f Lumiukko.exe >/dev/null if [ ! -L $mda ]; then ln -s ~/.local/share/MonoDevelop-5.0/LocalInstall/Addins/MonoDevelop.Jypeli.6.5.9/assemblies/Linux/ lib fi export MONO_PATH=lib mcs /r:lib/Jypeli.dll /r:lib/Jypeli.Physics2d.dll /r:lib/MonoGame.Framework.dll /r:lib/OpenTK.dll /r:lib/Tao.Sdl.dll /r:System.Numerics /r:System.Drawing Lumiukko.cs mono Lumiukko.exe
- Ja sitten tuolle pitäisi antaa suoritusoikeudet:
chdmod 755 csm.sh
- Ja tällöin ajaminen:
./csm.sh
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.