From e65488554ed8c4f8968c110783494dea7d505334 Mon Sep 17 00:00:00 2001
From: Sebastian Lehto <sebastian.m.lehto@utu.fi>
Date: Sat, 11 Jun 2022 22:57:52 +0300
Subject: [PATCH] Viimeisin versio

---
 bin/tetris/Main.class   | Bin 3972 -> 5733 bytes
 bin/tetris/Ohjain.class | Bin 3384 -> 3708 bytes
 src/tetris/Main.java    | 122 ++++++++++++++++++++++++++++++++++++----
 src/tetris/Ohjain.java  |  19 ++++++-
 4 files changed, 129 insertions(+), 12 deletions(-)

diff --git a/bin/tetris/Main.class b/bin/tetris/Main.class
index 22431629137517532bc159ad0710e953268a672a..09df4da480e4d5572d5c9d24249566b3991be639 100644
GIT binary patch
delta 2133
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
TGcYi4F|aVKVc5Z_!*CG*{~G?g

delta 453
zcmaE=(<0Ax>ff$?3=9m`3~x7bZR406z^Ti4XL22<1oLeM^~qnkjQAKc85vk}6BCOP
z85tO}Cbx5YOg7;$Wny?UIh$uHBim+1-seoLHH@kZwUgiSZ?11(;Afb@;LO0lAjZJN
zz`!8D;L6~}00IIG0t|u-j0{W+HyLg*Ffzz6Ffht7Ff*_-Ffc^#X1E=>o#C!8vmLV;
z%W?)MW;0f1Gq&XnqMI0$MA?i)S@dQyu(hx<wy-gZvTb6J6_CtX`2U$GD}=d#fv<&`
zaT9|bOMSv-2D=s(Mp2ec4Dw(_J2x^gFt9K<F)%QgG4L`lFwAD)V3@<e#W0safMFhk
zFvENXNrnXsstgMmG#KVHm@zD2aAa7@;KHzs!G~ckLlna*ux~sd?u7d$n&BP;KLaBJ
z2SYH!eTD}NOblEMfea6$8Q2(@8F(3d86GjPF|aTQGgvY_W?*ArWe{UfV0gm7#=yq#
zl!1YP2d?!Q0~5mq1_lOE2DX0;0_+U885#dFa4<6RG5usvU}9iqc+SAUz{K!^;pJp=
YF*yN-R}2gcTnsD>YZ!Jgyk@uv071=MssI20

diff --git a/bin/tetris/Ohjain.class b/bin/tetris/Ohjain.class
index 7f85bcf0c6b24470ff52e84312e18fbb75d62a69..6c14b2d7c189e86478d0deccd801c3e3f3446068 100644
GIT binary patch
literal 3708
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

delta 2136
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

diff --git a/src/tetris/Main.java b/src/tetris/Main.java
index 8e846cf..fb069b1 100644
--- a/src/tetris/Main.java
+++ b/src/tetris/Main.java
@@ -106,14 +106,16 @@ public class Main extends Application {
 						}
 						 
 						if (!peliOhi) {
-							if (muoto.suurinY() >= KORKEUS - KOKO) {
+							int y = muoto.suurinY();
+							Ohjain.liikutaAlas(muoto);
+							if (muoto.suurinY() == y) {
 								Muoto a = seuraavaMuoto;
 								ikkuna.getChildren().addAll(a.a, a.b, a.c, a.d);
 								moveOnKeyPress(a);
 								muoto = a;
 								seuraavaMuoto = Ohjain.teeMuoto();
+								removeRows(ikkuna);
 							}
-							Ohjain.liikutaAlas(muoto);
 							scoreTeksti.setText("Score: " + Integer.toString(score));
 							taso.setText("Taso: " + Integer.toString(riveja));
 						}
@@ -151,22 +153,122 @@ public class Main extends Application {
 		});
 	}
 	
+	public void nelioAlas(Rectangle nelio) {
+		RUUDUKKO[(int)nelio.getX()/KOKO][(int)nelio.getY()/KOKO] = 0;
+		nelio.setY(nelio.getY()+KOKO);
+		RUUDUKKO[(int)nelio.getX()/KOKO][(int)nelio.getY()/KOKO] = 1;
+	}
+	
 	private void removeRows(Pane pane) {
 		ArrayList<Node> neliot = new ArrayList<>();
-		int rivit = 0;
-		for (int i = 0; i < KORKEUS / KOKO; i++) {
-			int maara = 0;
-			for (int j = 0; j < LEVEYS / KOKO; j++) {
+		ArrayList<Integer> rivit = new ArrayList<>();
+		ArrayList<Rectangle> uudetNeliot = new ArrayList<>();
+		int tayna = 0;
+		int ylinrivi = 100;
+		for (int i = 0; i < RUUDUKKO[0].length; i++) {
+			for (int j = 0; j < RUUDUKKO.length; j++) {	
 				if (RUUDUKKO[j][i] != 0) {
-					maara++;
+					tayna++;					
+				}
+			}
+			if (tayna == RUUDUKKO.length) {
+				rivit.add(i);
+				if (i < ylinrivi) {
+					ylinrivi = i;
+				}
+			}
+			tayna = 0;
+		}
+		
+		for (Node nelio : pane.getChildren()) {
+			if (nelio instanceof Rectangle) {
+				neliot.add(nelio);
+			}
+		}
+		
+		while (true) {
+			ArrayList<Node> poistettavat = new ArrayList<>();
+			boolean lopeta = true;
+			for (Node nelio : neliot) {
+				Rectangle a = (Rectangle) nelio;
+				if (rivit.contains((int)a.getY()/KOKO)) {
+					lopeta = false;
+					pane.getChildren().remove(nelio);
+					poistettavat.add(nelio);
+					RUUDUKKO[(int)a.getX()/KOKO][(int)a.getY()/KOKO] = 0;
+				} else {
+					uudetNeliot.add(a);
 				}
 			}
-			if (maara == LEVEYS / KOKO) {
-				rivit++;
-				riveja++;
+			for (Node pois : poistettavat) {
+				neliot.remove(pois);
+			}
+			
+			
+			
+			if (lopeta) {
+				break;
+			}
+		}
+		
+		for (Rectangle a : uudetNeliot) {
+			for (int j = 0; j < rivit.size(); j++) {
+				if (a.getY()/KOKO < ylinrivi) {
+					for (int r : rivit) {
+						nelioAlas(a);
 				
+					}
+				}
 			}
 		}
+		
+			
+//		if (rivit.size() > 0) {
+//			do {
+//				for (Node nelio : pane.getChildren()) {
+//					if (nelio instanceof Rectangle) {
+//						neliot.add(nelio);
+//					}
+//				}
+//				score += 50;
+//				riveja++;
+//			
+//				for (Node nelio : neliot) {
+//					Rectangle a =  (Rectangle) nelio;
+//					if (a.getY() == rivit.get(0)*KOKO) {
+//						RUUDUKKO[(int) a.getX()/KOKO][(int) a.getY()/KOKO] = 0;
+//						pane.getChildren().remove(nelio);
+//					} else {
+//						uudetNeliot.add(nelio);
+//					}
+//				}
+//				for (Node nelio : uudetNeliot) {
+//					Rectangle a = (Rectangle) nelio;
+//					if (a.getY() < rivit.get(0)*KOKO) {
+//						RUUDUKKO[(int)a.getX()/KOKO][(int) a.getY()/KOKO] = 0;
+//						a.setY(a.getY()+KOKO);
+//					}
+//					rivit.remove(0);
+//					neliot.clear();
+//					uudetNeliot.clear();
+//					
+//					for (Node nelio1 : pane.getChildren()) {
+//						if (nelio1 instanceof Rectangle) {
+//							neliot.add(nelio1);
+//						}
+//					}
+//					for (Node nelio2 : neliot) {
+//						Rectangle b = (Rectangle) nelio2;
+//						try {
+//							RUUDUKKO[(int) b.getX()/KOKO][(int) b.getY()/KOKO] = 1;
+//						} catch (ArrayIndexOutOfBoundsException e) {
+//							
+//						}
+//					}
+//					neliot.clear();
+//				}
+//			} while(rivit.size() > 0);
+//		}
 	}
 
 	
diff --git a/src/tetris/Ohjain.java b/src/tetris/Ohjain.java
index be70fd1..186b988 100644
--- a/src/tetris/Ohjain.java
+++ b/src/tetris/Ohjain.java
@@ -12,6 +12,7 @@ public class Ohjain {
 	public static int [][] RUUDUKKO = Main.RUUDUKKO;
 	
 	public static void liikuOikealle(Muoto muoto) {
+		asetaRuudukonArvo(muoto, 0);
 		if (muoto.suurinX() < LEVEYS - KOKO) {
 
 			if (tilaa(muoto, 1, 0)) {
@@ -21,9 +22,11 @@ public class Ohjain {
 				muoto.d.setX(muoto.d.getX() + ASKEL);
 			}
 		}
+		asetaRuudukonArvo(muoto, 1);
 	}
 	
 	public static void liikuVasemmalle(Muoto muoto) {
+		asetaRuudukonArvo(muoto, 0);
 		if (muoto.pieninX() > 0) {
 			int liikutaA = RUUDUKKO[((int) muoto.a.getX() / KOKO) - 1][(int) muoto.a.getY()/KOKO];
 			int liikutaB = RUUDUKKO[((int) muoto.b.getX() / KOKO) - 1][(int) muoto.b.getY()/KOKO];
@@ -37,10 +40,11 @@ public class Ohjain {
 				muoto.d.setX(muoto.d.getX() - ASKEL);
 			}
 		}
+		asetaRuudukonArvo(muoto, 1);
 	}
 	
 	public static void kaanna(Muoto muoto) {
-		
+		asetaRuudukonArvo(muoto, 0);
 		switch (muoto.getNimi()) {
 			case "o":
 				break;
@@ -48,15 +52,26 @@ public class Ohjain {
 				muoto.muutaAsentoa();
 				break;
 		}
+		asetaRuudukonArvo(muoto, 1);
+	}
+	
+	public static void asetaRuudukonArvo(Muoto muoto, int arvo) {
+		RUUDUKKO[(int)muoto.a.getX()/KOKO][(int)muoto.a.getY()/KOKO] = arvo;
+		RUUDUKKO[(int)muoto.b.getX()/KOKO][(int)muoto.b.getY()/KOKO] = arvo;
+		RUUDUKKO[(int)muoto.c.getX()/KOKO][(int)muoto.c.getY()/KOKO] = arvo;
+		RUUDUKKO[(int)muoto.d.getX()/KOKO][(int)muoto.d.getY()/KOKO] = arvo;
 	}
 	
 	public static void liikutaAlas(Muoto muoto) {
-		if (tilaa(muoto, 0, 1)) { //muoto.suurinY() < KORKEUS - KOKO
+		asetaRuudukonArvo(muoto, 0);
+		
+		if (tilaa(muoto, 0, 1)) {
 			muoto.a.setY(muoto.a.getY() + KOKO);
 			muoto.b.setY(muoto.b.getY() + KOKO);
 			muoto.c.setY(muoto.c.getY() + KOKO);
 			muoto.d.setY(muoto.d.getY() + KOKO);
 		}
+		asetaRuudukonArvo(muoto, 1);
 	}
 	
 	public static boolean tilaa(Muoto muoto, int xDiff, int yDiff) {
-- 
GitLab