avoin/avoin23
Huom! TÄMÄ ON AVOIMEN YLIOPISTON SIVU.
Et voi suorittaa kurssia, ellet ole ilmoittautunut täällä.
Ohjelmointi 1, avoin 2023, luento 17
- Vuoden 2015 esimerkki: Hirsipuu
- Vuoden 2012 esimerkki: Lumiukot oliolla:
- ks: s2012 luennot
- Luennolle tehdyt koodit versionhallinnassa
- Luennon koodit versionhallinnassa
- 17. luento videona: Osa 1 ja 2 MP4 alkuperäinen
- luentoseinä
Luentoesimerkkien haku versionhallinnasta
siirry hakemistoon johon haluat esimerkit
ekalla kertaa (tai jos olet ennen su 19.10 hakenut niin tuhoa vanha)
git clone https://gitlab.jyu.fi/tie/ohj1/2021s/esimerkit.git .
jatkossa samassa hakemistossa
git pull
kopsi tuo hakemisto tai ainakin sinua kiinnostava alihakemisto toiseen paikkaan
periaatteessa tuonne syntyneen solutionin voi avata sellaisenaankin, mutta jos siihen tekee muutoksia, niin seuraavalla
pull
-komennolla tulee helposti konflikti
Kertausta
Määrät
Kysymyksiä
Kutsujärjestys
Kysymyksiä
Hirsipuupeli
suunnitelma-linkki on rikki.
VL: oikeus annettu
—Tekojärjestys:
Begin-metodiin:
PhysicsObject k = new PhysicsObject(100, 100);
Add(k);
Level.Background.CreateGradient(Color.Brown, Color.Black);
Label label = new Label("A");
Add(label);
k.Position = new Vector(100, -100);
label.Position = k.Position;
k.Add(label);
Font fontti = new Font(70, true);
label.Font = fontti;
Kirjain k = new Kirjain(this, 'A', new Vector(100, -100), new Vector(100, 100));
public class Kirjain: PhysicsObject
{
public Kirjain(Hirsipuu peli, char k, Vector p, Vector koko) : base(koko.X, koko.Y)
{
}
}
peli.Add(this);
Label label = new Label("A");
Add(label);
Position = p;
lable.Position = p + new Vector(0, 5);
// label.Font = Font.DefaultLarge;
Font fontti = new Font(70, true);
label.Font = fontti;
Image = Game.LoadImage("puupalikka");
- kokeile lisätä
Begin
-metodiin toinen kirjain, vaikkapaB
private static readonly string[] kirjaimet =
{
"QWERTYUIOPÅ",
"ASDFGHJKLÖÄ",
"ZXCVBNM -"
};
Aakkoset aakkoset = new Aakkoset(this, kirjaimet, new Vector(-200, 0), 800);
public class Aakkoset
{
public Aakkoset(PhysicsGame peli, string[] kirjaimet, Vector p, double w)
{
if (kirjaimet.Length == 0) return;
int n = kirjaimet[0].Length; // TODO: etsi pisin rivi
if (n == 0) return;
double d = w / n;
Vector koko = new Vector(d, d);
Vector sarekesiirtyma = new Vector(d, 0);
string jono = kirjaimet[0];
for (int sarake = 0; sarake < jono.Length; sarake++)
{
Vector paikka = p + sarake * sarekesiirtyma;
char kirjain = jono[sarake];
Kirjain palikka = new Kirjain(peli, kirjain, paikka, koko);
}
}
}
Vector rivisiirtyma = new Vector(d*0.2, -d*1.1);
Vector sarekesiirtyma = new Vector(d*1.1, 0);
for (int rivi = 0; rivi < kirjaimet.Length; rivi++ )
{
Vector paikka = p + rivi * rivisiirtyma;
string jono = kirjaimet[rivi];
for (int sarake = 0; sarake < jono.Length; sarake++)
{
char kirjain = jono[sarake];
Kirjain palikka = new Kirjain(peli, kirjain, paikka, koko);
paikka += sarekesiirtyma;
}
}
- siirrä kirjaimessa kuva ja fontti staattiseksi vakioksi:
private static readonly Image kuva = Game.LoadImage("puupalikka"); // vakio
private static readonly Font fontti = new Font(70, true);
private static readonly Vector siirto = new Vector(0, 5);
// if (luetutRivit != null) teksti = RandomGen.SelectOne(luetutRivit);
teksti = "LUMIUKKO";
Sana sana = new Sana(this, new Vector(-200, 300), teksti, 100);
- lisää sanaluokka
public class Sana
{
private string teksti;
private Vector position;
public Vector Position { get { return position; } }
private List<Kirjain> kirjaimet = new List<Kirjain>();
private PhysicsGame peli;
public Sana(PhysicsGame peli, Vector p, string teksti, double d)
{
this.teksti = teksti;
this.position = p;
Vector sarakesiirtyma = new Vector(d * 1.1, 0);
Vector paikka = p;
this.peli = peli;
Vector koko = new Vector(d, d);
for (int sarake = 0; sarake < teksti.Length; sarake++)
{
char kirjain = teksti[sarake];
Kirjain palikka = new Kirjain(peli, kirjain, paikka, koko);
this.kirjaimet.Add(palikka);
paikka += sarakesiirtyma;
}
}
}
lisää
Kirjain
-luokan muodostajaanbool nakyy = true
lisää myös:
label.IsVisible = nakyy;
Selitä loput toiminnasta...
huomaa mm liitokset:
peli.Add(new AxleJoint(torso, paa));
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.