Skip to content

Commit 876c7aa

Browse files
committed
hahmo-3.3
1 parent 0e98472 commit 876c7aa

5 files changed

Lines changed: 128 additions & 107 deletions

File tree

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
name=Tasohyppelyhahmot
1+
name=Tasohyppely
22
category=Other
33
authors=Tommi Oinonen
44
url=https://github.com/Muusssi/processing_opas/wiki/Tasohyppelyhahmot
55
sentence=Kirjasto tasohyppelypelien tekemiseen.
66
paragraph=
7-
version=3.2
8-
prettyVersion=3.2.0
7+
version=3.3
8+
prettyVersion=3.3.0
99
lastUpdated=0
1010
minRevision=0
1111
maxRevision=0

libraries/tasohyppely/src/hahmot/Pelikentta.java

Lines changed: 33 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3,63 +3,63 @@
33
import java.util.ArrayList;
44

55
import processing.core.PApplet;
6-
import processing.core.PGraphics;
76
import processing.core.PImage;
87

98
public class Pelikentta {
109

10+
private static String VERSION = "3.3";
11+
1112
protected Tasohyppelyhahmo aktiivinen_hahmo = null;
1213

1314
protected static PApplet papplet;
1415
protected static boolean koordinaatisto_alustettu = false;
1516

16-
protected PImage tausta;
17+
public PImage tausta;
1718

1819
public int maailman_leveys;
1920
public int maailman_korkeus;
2021

21-
protected float kameran_siirto_x = 0;
22-
protected float kameran_siirto_y = 0;
22+
public float kameran_siirto_x = 0;
23+
public float kameran_siirto_y = 0;
2324
private int kamera_asetettu_viimeksi = 0;
2425

2526
protected ArrayList<Taso> tasot = new ArrayList<Taso>();
2627
protected ArrayList<Taso> tasotKorkeudenMukaan = new ArrayList<Taso>();
27-
protected PGraphics taso_kerros;
28-
protected boolean tasokerros_vanhentunut = true;
2928

3029
protected ArrayList<Seina> seinat = new ArrayList<Seina>();
3130
protected ArrayList<Seina> seinatJarjestyksessa = new ArrayList<Seina>();
32-
protected PGraphics seina_kerros;
33-
protected boolean seinakerros_vanhentunut = true;
3431

3532
public Pelikentta(PApplet papplet, int maailman_leveys, int maailman_korkeus) {
3633
Pelikentta.papplet = papplet;
34+
alusta_koordinaatisto();
3735
this.maailman_leveys = maailman_leveys;
3836
this.maailman_korkeus = maailman_korkeus;
39-
this.taso_kerros = papplet.createGraphics(maailman_leveys, maailman_korkeus);
40-
this.seina_kerros = papplet.createGraphics(maailman_leveys, maailman_korkeus);
4137
}
4238

4339
public Pelikentta(PApplet papplet, PImage tausta_kuva) {
4440
Pelikentta.papplet = papplet;
41+
alusta_koordinaatisto();
4542
this.maailman_leveys = tausta_kuva.width;
4643
this.maailman_korkeus = tausta_kuva.height;
4744
tausta = tausta_kuva;
48-
}
45+
}
4946

50-
protected void varmista_kamera() {
47+
public Pelikentta(PApplet papplet, PImage tausta_kuva, int maailman_leveys, int maailman_korkeus) {
48+
Pelikentta.papplet = papplet;
5149
alusta_koordinaatisto();
50+
this.maailman_leveys = maailman_leveys;
51+
this.maailman_korkeus = maailman_korkeus;
52+
tausta = tausta_kuva;
53+
}
54+
55+
public void varmista_kamera() {
5256
if (papplet.frameCount != kamera_asetettu_viimeksi) {
5357
kamera_asetettu_viimeksi = papplet.frameCount;
54-
if (aktiivinen_hahmo != null) {
55-
aktiivinen_hahmo.seuraa_kameralla();
56-
}
57-
this.paivita_seina_kerros();
58-
this.paivita_taso_kerros();
58+
aktiivinen_hahmo.seuraa_kameralla();
5959
}
6060
}
6161

62-
private static void alusta_koordinaatisto() {
62+
public static void alusta_koordinaatisto() {
6363
if (!koordinaatisto_alustettu) {
6464
papplet.pushMatrix();
6565
papplet.translate(0, papplet.height + 0);
@@ -69,13 +69,6 @@ private static void alusta_koordinaatisto() {
6969
}
7070
}
7171

72-
public void piirra_naytolle() {
73-
koordinaatisto_alustettu = false;
74-
papplet.popMatrix();
75-
papplet.popMatrix();
76-
}
77-
78-
7972
public float mouse_x() {
8073
return papplet.mouseX - kameran_siirto_x;
8174
}
@@ -91,7 +84,7 @@ public Tasohyppelyhahmo luo_tasohyppelyhahmo(PImage kuva) {
9184
public void piirra_tausta() {
9285
if (this.tausta != null) {
9386
papplet.pushMatrix();
94-
papplet.image(tausta, kameran_siirto_x, -kameran_siirto_y+papplet.height-tausta.height);
87+
papplet.image(tausta, kameran_siirto_x, -kameran_siirto_y + papplet.height - maailman_korkeus, maailman_leveys, maailman_korkeus);
9588
papplet.popMatrix();
9689
}
9790
varmista_kamera();
@@ -101,34 +94,10 @@ public Taso luo_taso(float x, float korkeus, float pituus) {
10194
return new Taso(x, korkeus, pituus, this);
10295
}
10396

104-
protected void paivita_taso_kerros() {
105-
if (tasokerros_vanhentunut) {
106-
taso_kerros = papplet.createGraphics(maailman_leveys, maailman_korkeus);
107-
taso_kerros.beginDraw();
108-
for (int i=0; i<tasot.size(); i++) {
109-
tasot.get(i).piirra();
110-
}
111-
taso_kerros.endDraw();
112-
tasokerros_vanhentunut = true;
113-
}
114-
}
115-
11697
public void piirra_tasot() {
11798
varmista_kamera();
118-
if (this.taso_kerros != null) {
119-
papplet.image(this.taso_kerros, 0, 0);
120-
}
121-
}
122-
123-
protected void paivita_seina_kerros() {
124-
if (seinakerros_vanhentunut) {
125-
seina_kerros = papplet.createGraphics(maailman_leveys, maailman_korkeus);
126-
seina_kerros.beginDraw();
127-
for (int i=0; i<seinat.size(); i++) {
128-
seinat.get(i).piirra();
129-
}
130-
seina_kerros.endDraw();
131-
seinakerros_vanhentunut = false;
99+
for (int i=0; i<tasot.size(); i++) {
100+
tasot.get(i).piirra();
132101
}
133102
}
134103

@@ -139,9 +108,19 @@ public Seina luo_seina(float x, float y, float korkeus) {
139108

140109
public void piirra_seinat() {
141110
this.varmista_kamera();
142-
if (this.seina_kerros != null) {
143-
papplet.image(seina_kerros, 0, 0);
111+
for (int i=0; i<seinat.size(); i++) {
112+
seinat.get(i).piirra();
144113
}
145114
}
146115

116+
public void piirra_naytolle() {
117+
papplet.popMatrix();
118+
papplet.popMatrix();
119+
koordinaatisto_alustettu = false;
120+
}
121+
122+
public String kirjasto_versio() {
123+
return VERSION;
124+
}
125+
147126
}

libraries/tasohyppely/src/hahmot/Seina.java

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,37 @@
66

77
public class Seina {
88

9-
protected static int oletus_paksuus = 3;
9+
public static int oletus_paksuus = 3;
10+
public static int oletus_r = 0;
11+
public static int oletus_g = 0;
12+
public static int oletus_b = 0;
1013

11-
float x, y;
12-
float korkeus;
13-
protected int paksuus;
14+
public float x, y;
15+
public float korkeus;
16+
public int paksuus;
1417
private boolean olemassa = true;
1518
public Pelikentta peli_kentta;
16-
17-
public static void oletus_pakuus(int paksuus) {
18-
oletus_paksuus = paksuus;
19-
}
19+
public int r = 0;
20+
public int g = 0;
21+
public int b = 0;
2022

2123
public Seina(float x, float y, float korkeus, Pelikentta kentta) {
2224
this.x = x;
2325
this.y = y;
2426
this.korkeus = korkeus;
25-
this.paksuus = Seina.oletus_paksuus;
2627
this.peli_kentta = kentta;
28+
this.paksuus = oletus_paksuus;
2729
peli_kentta.seinat.add(this);
2830
peli_kentta.seinatJarjestyksessa = new ArrayList<Seina>(peli_kentta.seinat);
2931
Collections.sort(peli_kentta.seinatJarjestyksessa, new SeinaVertailija());
30-
peli_kentta.seinakerros_vanhentunut = true;
31-
}
32-
33-
public void aseta_paksuus(int paksuus) {
34-
this.paksuus = paksuus;
35-
this.peli_kentta.tasokerros_vanhentunut = true;
3632
}
3733

3834
protected void piirra() {
39-
peli_kentta.seina_kerros.strokeWeight(paksuus);
40-
peli_kentta.seina_kerros.line(x, y, x, y + korkeus);
35+
Pelikentta.papplet.pushStyle();
36+
Pelikentta.papplet.strokeWeight(paksuus);
37+
Pelikentta.papplet.stroke(r, g, b);
38+
Pelikentta.papplet.line(x, y, x, y + korkeus);
39+
Pelikentta.papplet.popStyle();
4140
}
4241

4342
public boolean kohdalla(Tasohyppelyhahmo hahmo) {
@@ -53,7 +52,6 @@ public void poista() {
5352
peli_kentta.seinatJarjestyksessa = new ArrayList<Seina>(peli_kentta.seinat);
5453
Collections.sort(peli_kentta.seinatJarjestyksessa, new SeinaVertailija());
5554
olemassa = false;
56-
peli_kentta.seinakerros_vanhentunut = true;
5755
}
5856
}
5957

@@ -63,10 +61,33 @@ public void palauta() {
6361
peli_kentta.seinatJarjestyksessa = new ArrayList<Seina>(peli_kentta.seinat);
6462
Collections.sort(peli_kentta.seinatJarjestyksessa, new SeinaVertailija());
6563
olemassa = true;
66-
peli_kentta.seinakerros_vanhentunut = true;
6764
}
6865
}
6966

67+
public void vari(int harmaa) {
68+
this.r = harmaa;
69+
this.g = harmaa;
70+
this.b = harmaa;
71+
}
72+
73+
public void vari(int r, int g, int b) {
74+
this.r = r;
75+
this.g = g;
76+
this.b = b;
77+
}
78+
79+
public static void oletus_vari(int harmaa) {
80+
oletus_r = harmaa;
81+
oletus_g = harmaa;
82+
oletus_b = harmaa;
83+
}
84+
85+
public static void oletus_vari(int r, int g, int b) {
86+
oletus_r = r;
87+
oletus_g = g;
88+
oletus_b = b;
89+
}
90+
7091
public class SeinaVertailija implements Comparator<Seina> {
7192
@Override
7293
public int compare(Seina t1, Seina t2) {

libraries/tasohyppely/src/hahmot/Taso.java

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,29 @@
77
//Taso, jonka päällä hahmot voivat hyppiä
88
public class Taso {
99

10-
protected static int oletus_paksuus = 3;
10+
public static int oletus_paksuus = 3;
11+
public static int oletus_r = 0;
12+
public static int oletus_g = 0;
13+
public static int oletus_b = 0;
1114

12-
float x, y;
13-
float pituus;
14-
protected int paksuus;
15+
public float x, y;
16+
public float pituus;
17+
public int paksuus;
1518
private boolean olemassa = true;
1619
public Pelikentta peli_kentta;
20+
public int r = 0;
21+
public int g = 0;
22+
public int b = 0;
1723

1824
public Taso(float x, float korkeus, float pituus, Pelikentta kentta) {
1925
this.x = x;
2026
this.y = korkeus;
2127
this.pituus = pituus;
22-
this.paksuus = oletus_paksuus;
2328
this.peli_kentta = kentta;
29+
this.paksuus = oletus_paksuus;
2430
peli_kentta.tasot.add(this);
2531
peli_kentta.tasotKorkeudenMukaan = new ArrayList<Taso>(peli_kentta.tasot);
2632
Collections.sort(peli_kentta.tasotKorkeudenMukaan, new TasoKorkeusVertailija());
27-
peli_kentta.paivita_taso_kerros();
28-
}
29-
30-
public static void oletus_pakuus(int paksuus) {
31-
oletus_paksuus = paksuus;
3233
}
3334

3435
public void poista() {
@@ -37,7 +38,6 @@ public void poista() {
3738
peli_kentta.tasotKorkeudenMukaan = new ArrayList<Taso>(peli_kentta.tasot);
3839
Collections.sort(peli_kentta.tasotKorkeudenMukaan, new TasoKorkeusVertailija());
3940
olemassa = false;
40-
peli_kentta.tasokerros_vanhentunut = true;
4141
}
4242
}
4343

@@ -47,13 +47,15 @@ public void palauta() {
4747
peli_kentta.tasotKorkeudenMukaan = new ArrayList<Taso>(peli_kentta.tasot);
4848
Collections.sort(peli_kentta.tasotKorkeudenMukaan, new TasoKorkeusVertailija());
4949
olemassa = true;
50-
peli_kentta.tasokerros_vanhentunut = true;
5150
}
5251
}
5352

5453
protected void piirra() {
55-
peli_kentta.taso_kerros.strokeWeight(paksuus);
56-
peli_kentta.taso_kerros.line(x, y, x + pituus, y);
54+
Pelikentta.papplet.pushStyle();
55+
Pelikentta.papplet.strokeWeight(paksuus);
56+
Pelikentta.papplet.stroke(r, g, b);
57+
Pelikentta.papplet.line(x, y, x + pituus, y);
58+
Pelikentta.papplet.popStyle();
5759
}
5860

5961
public boolean onko_kohdalla(Tasohyppelyhahmo hahmo) {
@@ -79,6 +81,30 @@ public boolean onko_alla(Tasohyppelyhahmo hahmo) {
7981
return false;
8082
}
8183

84+
public void vari(int harmaa) {
85+
this.r = harmaa;
86+
this.g = harmaa;
87+
this.b = harmaa;
88+
}
89+
90+
public void vari(int r, int g, int b) {
91+
this.r = r;
92+
this.g = g;
93+
this.b = b;
94+
}
95+
96+
public static void oletus_vari(int harmaa) {
97+
oletus_r = harmaa;
98+
oletus_g = harmaa;
99+
oletus_b = harmaa;
100+
}
101+
102+
public static void oletus_vari(int r, int g, int b) {
103+
oletus_r = r;
104+
oletus_g = g;
105+
oletus_b = b;
106+
}
107+
82108
private class TasoKorkeusVertailija implements Comparator<Taso> {
83109
@Override
84110
public int compare(Taso t1, Taso t2) {

0 commit comments

Comments
 (0)