Pakete Neu organisiert

This commit is contained in:
Sebastian Kacza
2021-01-12 09:31:39 +01:00
parent 471c2e7353
commit bd440e8150
27 changed files with 93 additions and 96 deletions

View File

@@ -1,17 +1,5 @@
Seb;245 Sebastian;1
Elmo;240 Elmar;0
Moritz;220 Fabian;0
Alaa-Aldin;217 Moritz;0
Fabian;215 Alaa Aldin;0
Thomas;1233
Emil;-21331
Heinz;312
Gert;234
Kasper;24
Jens;234
Paul;234
Till;553
Reiner;462
Achim;2344
Sebbastian;0
Weihnachtsmann;2
1 Seb Sebastian 245 1
2 Elmo Elmar 240 0
3 Moritz Fabian 220 0
4 Alaa-Aldin Moritz 217 0
5 Fabian Alaa Aldin 215 0
Thomas 1233
Emil -21331
Heinz 312
Gert 234
Kasper 24
Jens 234
Paul 234
Till 553
Reiner 462
Achim 2344
Sebbastian 0
Weihnachtsmann 2

View File

@@ -5,7 +5,7 @@ package de.jaujau.UnitTests;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.jaujau.daten.Audio; import de.jaujau.audio.Audio;
class TEST_Audio { class TEST_Audio {

View File

@@ -5,9 +5,9 @@ import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.jaujau.daten.Farbe; import de.jaujau.karten.Farbe;
import de.jaujau.daten.Kartensatz; import de.jaujau.karten.Kartensatz;
import de.jaujau.daten.Spieler; import de.jaujau.karten.Spieler;
class TEST_Kartensatz { class TEST_Kartensatz {

View File

@@ -5,7 +5,7 @@ package de.jaujau.UnitTests;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.jaujau.daten.Spielerverwaltung; import de.jaujau.spieler.Spielerverwaltung;
class TEST_Spielerverwaltung { class TEST_Spielerverwaltung {

View File

@@ -7,7 +7,7 @@ import java.awt.Image;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.jaujau.daten.Texturenpaket; import de.jaujau.texturen.Texturenpaket;
class TEST_Texturenpaket { class TEST_Texturenpaket {

View File

@@ -5,7 +5,8 @@ import static org.junit.jupiter.api.Assertions.*;
import java.awt.Image; import java.awt.Image;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.jaujau.daten.TexturenpaketIntern;
import de.jaujau.texturen.TexturenpaketIntern;
class TEST_TexturenpaketIntern { class TEST_TexturenpaketIntern {

View File

@@ -5,7 +5,7 @@ import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import de.jaujau.daten.Texturenpakete; import de.jaujau.texturen.Texturenpakete;
class TEST_Texturenpakete { class TEST_Texturenpakete {

View File

@@ -1,4 +1,4 @@
package de.jaujau.daten; package de.jaujau.audio;
import java.io.IOException; import java.io.IOException;

View File

@@ -1,6 +1,6 @@
package de.jaujau.gui; package de.jaujau.gui;
import static de.jaujau.daten.Spieler.COMPUTER; import static de.jaujau.karten.Spieler.COMPUTER;
import static de.jaujau.daten.Spieler.SPIELER; import static de.jaujau.karten.Spieler.SPIELER;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.CardLayout; import java.awt.CardLayout;
@@ -9,11 +9,13 @@ import javax.swing.JPanel;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.table.DefaultTableModel; import javax.swing.table.DefaultTableModel;
import de.jaujau.daten.Farbe;
import de.jaujau.daten.Spieler; import de.jaujau.karten.Farbe;
import de.jaujau.daten.Spielerverwaltung; import de.jaujau.karten.Spieler;
import de.jaujau.daten.Texturenpakete; import de.jaujau.spieler.Spielerverwaltung;
import de.jaujau.spiellogik.Spiel; import de.jaujau.spiellogik.Spiel;
import de.jaujau.texturen.Texturenpakete;
import javax.swing.JLabel; import javax.swing.JLabel;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Image; import java.awt.Image;

View File

@@ -9,9 +9,11 @@ import java.awt.Dimension;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import de.jaujau.daten.Spielerverwaltung;
import de.jaujau.daten.Texturenpakete; import de.jaujau.spieler.Spielerverwaltung;
import de.jaujau.spiellogik.Spiel; import de.jaujau.spiellogik.Spiel;
import de.jaujau.texturen.Texturenpakete;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;

View File

@@ -13,8 +13,9 @@ import javax.swing.JPanel;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import de.jaujau.daten.Spielerverwaltung; import de.jaujau.spieler.Spielerverwaltung;
import de.jaujau.daten.Texturenpakete; import de.jaujau.texturen.Texturenpakete;
import javax.swing.JComboBox; import javax.swing.JComboBox;
import javax.swing.JFileChooser; import javax.swing.JFileChooser;

View File

@@ -1,4 +1,4 @@
package de.jaujau.daten; package de.jaujau.karten;
public enum Ablageort { public enum Ablageort {
SPIELER, COMPUTER, ABLAGESTAPEL, ZIEHSTAPEL SPIELER, COMPUTER, ABLAGESTAPEL, ZIEHSTAPEL

View File

@@ -1,4 +1,4 @@
package de.jaujau.daten; package de.jaujau.karten;
public enum Farbe { public enum Farbe {
PIK, KREUZ, HERZ, KARO PIK, KREUZ, HERZ, KARO

View File

@@ -1,5 +1,4 @@
package de.jaujau.daten; package de.jaujau.karten;
/** /**
* Klasse Karte * Klasse Karte
@@ -20,7 +19,7 @@ public class Karte {
public Karte(Farbe f, Wert w) { public Karte(Farbe f, Wert w) {
FARBE = f; FARBE = f;
WERT = w; WERT = w;
Ablageort = de.jaujau.daten.Ablageort.ZIEHSTAPEL; Ablageort = de.jaujau.karten.Ablageort.ZIEHSTAPEL;
} }
/** /**

View File

@@ -1,4 +1,4 @@
package de.jaujau.daten; package de.jaujau.karten;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random; import java.util.Random;

View File

@@ -5,7 +5,7 @@
* @version 1.0 * @version 1.0
*/ */
package de.jaujau.daten; package de.jaujau.karten;
public enum Spieler { public enum Spieler {
SPIELER, COMPUTER SPIELER, COMPUTER

View File

@@ -1,4 +1,4 @@
package de.jaujau.daten; package de.jaujau.karten;
public enum Wert { public enum Wert {
SIEBEN, ACHT, NEUN, ZEHN, BUBE, DAME, KOENING, ASS SIEBEN, ACHT, NEUN, ZEHN, BUBE, DAME, KOENING, ASS

View File

@@ -5,7 +5,7 @@
* @version 1.0 * @version 1.0
*/ */
package de.jaujau.daten; package de.jaujau.spieler;
/** /**
* Klasse Spielerdaten * Klasse Spielerdaten

View File

@@ -1,4 +1,4 @@
package de.jaujau.daten; package de.jaujau.spieler;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
@@ -8,6 +8,12 @@ import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
/**
* Verwaltung der Spieler und deren Highscore
* @author Alaa Aldin
*
*/
public class Spielerverwaltung { public class Spielerverwaltung {
@@ -32,7 +38,7 @@ public class Spielerverwaltung {
/** /**
* * Spieler Liste aus Datei einlesen
*/ */
public void lesenDatei() { public void lesenDatei() {
if(datei.exists() || datei.canRead()) { if(datei.exists() || datei.canRead()) {
@@ -62,7 +68,7 @@ public class Spielerverwaltung {
/** /**
* * Spieler liste in datei schreiben
*/ */
public void schreibeDatei() { public void schreibeDatei() {
if(spielerliste.size() > 0) { if(spielerliste.size() > 0) {
@@ -111,7 +117,7 @@ public class Spielerverwaltung {
/** /**
* * Highscore Liste als String Array ausgeben
* @return * @return
*/ */
public String[][] getHighscoreTabelle() { public String[][] getHighscoreTabelle() {
@@ -127,7 +133,7 @@ public class Spielerverwaltung {
/** /**
* * Gibt das Level des Aktuellenspielers zurück
* @return * @return
*/ */
public int getLevel() { public int getLevel() {

View File

@@ -5,7 +5,7 @@
* @version 1.0 * @version 1.0
*/ */
package de.jaujau.daten; package de.jaujau.spieler;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;

View File

@@ -9,9 +9,9 @@ package de.jaujau.spiellogik;
import de.jaujau.daten.Spielerverwaltung;
import de.jaujau.daten.Texturenpakete;
import de.jaujau.gui.GUI; import de.jaujau.gui.GUI;
import de.jaujau.spieler.Spielerverwaltung;
import de.jaujau.texturen.Texturenpakete;
public class Anwendung { public class Anwendung {

View File

@@ -5,15 +5,15 @@ package de.jaujau.spiellogik;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random; import java.util.Random;
import de.jaujau.daten.Farbe; import de.jaujau.karten.Farbe;
import de.jaujau.daten.Kartensatz; import de.jaujau.karten.Kartensatz;
import de.jaujau.daten.Spieler; import de.jaujau.karten.Spieler;
import de.jaujau.daten.Wert; import de.jaujau.karten.Wert;
/** /**
* Diese Klasse steuert den Computer Gegner * Diese Klasse steuert den Computer Gegner
* @author Moritz K<>ppe * @author Moritz K<>ppe
*/ */
public class Computer_gegner { public class Computer_gegner {
@@ -49,9 +49,9 @@ public class Computer_gegner {
* Funktion sucht aus, welche Karte der Computer Gegner legt, nach verschiedenen Parametern * Funktion sucht aus, welche Karte der Computer Gegner legt, nach verschiedenen Parametern
* Zuerst sollen Karten gelegt werden, welche den aktuell geltenden Effekt kontern, falls einer liegt * Zuerst sollen Karten gelegt werden, welche den aktuell geltenden Effekt kontern, falls einer liegt
* Danach werden Effektkarten der aktuellen Farbe gelegt * Danach werden Effektkarten der aktuellen Farbe gelegt
* Als n<>chstes Werden Karten der aktuellen Farbe gelegt * Als n<>chstes Werden Karten der aktuellen Farbe gelegt
* Dann Karten die den aktuellenw Wert besitzen * Dann Karten die den aktuellenw Wert besitzen
* Zuletzt Buben um sich eine Farbe zu w<>nschen * Zuletzt Buben um sich eine Farbe zu w<>nschen
* @param boolean, muss Spieler ziehen? * @param boolean, muss Spieler ziehen?
* @param boolean, muss Spieler aussetzen? * @param boolean, muss Spieler aussetzen?
* @return Kartenindex der Karte die gelegt werden soll * @return Kartenindex der Karte die gelegt werden soll
@@ -63,7 +63,7 @@ public class Computer_gegner {
hand = kartensatz.getHand(Spieler.COMPUTER); //Speichert die Karten, die der Computer aktuell auf der Hand hat hand = kartensatz.getHand(Spieler.COMPUTER); //Speichert die Karten, die der Computer aktuell auf der Hand hat
farbeInHand = false; //Speichert, ob die aktuell liegende Farbe in der Hand des Computers vorhanden ist farbeInHand = false; //Speichert, ob die aktuell liegende Farbe in der Hand des Computers vorhanden ist
wertInHand = false; //Speichert, ob der aktuell liegende Wert in der Hand des Computers vorhanden ist wertInHand = false; //Speichert, ob der aktuell liegende Wert in der Hand des Computers vorhanden ist
int rueckgabeindex = -1; //Speichert den Kartenindex, der Karte, die gelegt werden soll. Standard -1 f<>r ziehen, falls keine passende Karte auf Hand int rueckgabeindex = -1; //Speichert den Kartenindex, der Karte, die gelegt werden soll. Standard -1 f<>r ziehen, falls keine passende Karte auf Hand
bubeInHand = false; //Speichert, ob ein Bube in der Hand vorhanden ist bubeInHand = false; //Speichert, ob ein Bube in der Hand vorhanden ist
gegnerhand = kartensatz.getHand(Spieler.SPIELER); gegnerhand = kartensatz.getHand(Spieler.SPIELER);
@@ -75,19 +75,19 @@ public class Computer_gegner {
Farbe farbeHK = kartensatz.getKarte(hand.get(i)).getFARBE(); //Holt sich die Farbe der aktuellen Handkarte Farbe farbeHK = kartensatz.getKarte(hand.get(i)).getFARBE(); //Holt sich die Farbe der aktuellen Handkarte
Wert wertHK = kartensatz.getKarte(hand.get(i)).getWERT(); //Holt sich den Wert der aktuellen Handkarte Wert wertHK = kartensatz.getKarte(hand.get(i)).getWERT(); //Holt sich den Wert der aktuellen Handkarte
if(farbeHK == letztekartefarbe && wertHK != Wert.BUBE) { //Pr<50>ft ob Farbe der aktuellen Handkarte zur offen liegenden Karte passt if(farbeHK == letztekartefarbe && wertHK != Wert.BUBE) { //Pr<50>ft ob Farbe der aktuellen Handkarte zur offen liegenden Karte passt
farbeInHand = true; farbeInHand = true;
} }
if(wertHK == letztekartewert) { //Pr<50>ft ob Wert der aktuellen Handkarte zur liegenden Karte passt if(wertHK == letztekartewert) { //Pr<50>ft ob Wert der aktuellen Handkarte zur liegenden Karte passt
wertInHand = true; wertInHand = true;
} }
if(wertHK == Wert.BUBE) { //Pr<50>ft, ob ein Bube (W<>nscher) auf der Hand vorhanden ist if(wertHK == Wert.BUBE) { //Pr<50>ft, ob ein Bube (W<>nscher) auf der Hand vorhanden ist
bubeInHand = true; bubeInHand = true;
} }
//Sollte der Computer genau eine 8 und eine weitere Karte der selben Farbe (keine Buben) haben, wird er versuchen diese 8 pr<70>feriert zu legen //Sollte der Computer genau eine 8 und eine weitere Karte der selben Farbe (keine Buben) haben, wird er versuchen diese 8 pr<70>feriert zu legen
if(((wertHK == Wert.ACHT && farbeHK == letztekartefarbe) || (wertHK == Wert.ACHT && letztekartewert == Wert.ACHT)) && farbeZahl(farbeHK) == 2) { if(((wertHK == Wert.ACHT && farbeHK == letztekartefarbe) || (wertHK == Wert.ACHT && letztekartewert == Wert.ACHT)) && farbeZahl(farbeHK) == 2) {
achtInHand = true; achtInHand = true;
} }
@@ -130,7 +130,7 @@ public class Computer_gegner {
//W<>hlt aus, welche Karte gelegt wird //W<>hlt aus, welche Karte gelegt wird
if ((aussetzen || ziehen) && wertInHand) { //Muss der Computer aussetzen oder ziehen, versucht er eine passende Konterkarte zu legen if ((aussetzen || ziehen) && wertInHand) { //Muss der Computer aussetzen oder ziehen, versucht er eine passende Konterkarte zu legen
rueckgabeindex = wertLegen(letztekartewert); rueckgabeindex = wertLegen(letztekartewert);
if (debug) { if (debug) {
@@ -169,13 +169,13 @@ public class Computer_gegner {
} }
} }
else if(bubeInHand && !aussetzen && !ziehen) { //Hat der Computer weder die passende Farbe, noch den passenden Wert auf der Hand, aber einen W<>nscher, legt er diesen else if(bubeInHand && !aussetzen && !ziehen) { //Hat der Computer weder die passende Farbe, noch den passenden Wert auf der Hand, aber einen W<>nscher, legt er diesen
rueckgabeindex = wertLegen(Wert.BUBE); rueckgabeindex = wertLegen(Wert.BUBE);
if (debug) { if (debug) {
System.out.println("COMPUTER: Fall 6"); System.out.println("COMPUTER: Fall 6");
} }
} }
else if(aussetzen && !wertInHand) { //Muss der Computer aussetzen und kann nicht reagieren, gibt er eine -2 zur<75>ck else if(aussetzen && !wertInHand) { //Muss der Computer aussetzen und kann nicht reagieren, gibt er eine -2 zur<75>ck
rueckgabeindex = -2; rueckgabeindex = -2;
if (debug) { if (debug) {
System.out.println("COMPUTER: Fall 7"); System.out.println("COMPUTER: Fall 7");
@@ -188,10 +188,10 @@ public class Computer_gegner {
} }
/** /**
* Funktion sucht Karte passend zur gesuchten Farbe aus der Hand und gibt diese zur<75>ck * Funktion sucht Karte passend zur gesuchten Farbe aus der Hand und gibt diese zur<75>ck
* Passen mehrere Karten, gibt sie die letzte passende zur<75>ck * Passen mehrere Karten, gibt sie die letzte passende zur<75>ck
* @param Farbe, Farbe zu der eine Karte gesucht wird * @param Farbe, Farbe zu der eine Karte gesucht wird
* @return integer Index der zur<75>ckgegebenen Karte * @return integer Index der zur<75>ckgegebenen Karte
*/ */
private int farbeLegen(Farbe gesuchteFarbe) { private int farbeLegen(Farbe gesuchteFarbe) {
int ind = -1; int ind = -1;
@@ -207,10 +207,10 @@ public class Computer_gegner {
} }
/** /**
* Funktion sucht Karte passend zum gesuchten Wert aus der Hand und gibt diese zur<75>ck * Funktion sucht Karte passend zum gesuchten Wert aus der Hand und gibt diese zur<75>ck
* Passen mehrere Karten, gibt sie die letzte passende zur<75>ck * Passen mehrere Karten, gibt sie die letzte passende zur<75>ck
* @param Wert, Wert zu dem eine passende Karte gesucht wird * @param Wert, Wert zu dem eine passende Karte gesucht wird
* @return integer Index der zur<75>ckgegebenen Karte * @return integer Index der zur<75>ckgegebenen Karte
*/ */
private int wertLegen(Wert gesuchterWert) { private int wertLegen(Wert gesuchterWert) {
int ind = -1; int ind = -1;
@@ -225,10 +225,10 @@ public class Computer_gegner {
} }
/** /**
* Funktion w<>hlt f<>r den Computer aus, welche Farbe er sich bei einem W<>nscher aussucht * Funktion w<>hlt f<>r den Computer aus, welche Farbe er sich bei einem W<>nscher aussucht
* Dazu wird geschaut, von welcher Farbe er am meisten Karten auf der Hand hat * Dazu wird geschaut, von welcher Farbe er am meisten Karten auf der Hand hat
* @param Kartensatz aktueller Stand des Kartensatzes * @param Kartensatz aktueller Stand des Kartensatzes
* @return Farbe gew<65>hlte Farbe * @return Farbe gew<65>hlte Farbe
*/ */
public Farbe farbeAussuchen(Kartensatz karten) { public Farbe farbeAussuchen(Kartensatz karten) {
kartensatz = karten; kartensatz = karten;
@@ -257,9 +257,9 @@ public class Computer_gegner {
} }
/** /**
* Funktion, die eine zuf<75>llige Zahl zwischen 0 und einer andere Zahl r-1 ausgibt * Funktion, die eine zuf<75>llige Zahl zwischen 0 und einer andere Zahl r-1 ausgibt
* @param int r * @param int r
* @return int zuf<75>llige Zahl * @return int zuf<75>llige Zahl
*/ */
private int zufall(int r){ private int zufall(int r){
Random zufall = new Random(); Random zufall = new Random();
@@ -270,8 +270,8 @@ public class Computer_gegner {
} }
/** /**
* Funktion z<>hlt f<>r die jeweilige Farbe, wie viele Karten der Farbe auf der Hand des Computer sind * Funktion z<>hlt f<>r die jeweilige Farbe, wie viele Karten der Farbe auf der Hand des Computer sind
* @param farbe, f<>r welche gez<65>hlt werden soll * @param farbe, f<>r welche gez<65>hlt werden soll
* @return integer Wie viele Karten der Farbe auf der Hand sind * @return integer Wie viele Karten der Farbe auf der Hand sind
*/ */
private int farbeZahl(Farbe farbe) { private int farbeZahl(Farbe farbe) {
@@ -289,7 +289,7 @@ public class Computer_gegner {
} }
/** /**
* Dies ist nur eine Testfunktion * Dies ist nur eine Testfunktion
* @return Integer, gibt immer 1 zur<75>ck * @return Integer, gibt immer 1 zur<75>ck
*/ */
public int cpuTest() { public int cpuTest() {
return 1; return 1;

View File

@@ -2,13 +2,13 @@ package de.jaujau.spiellogik;
import java.util.Random; import java.util.Random;
import de.jaujau.daten.Audio; import de.jaujau.audio.Audio;
import de.jaujau.daten.Farbe;
import de.jaujau.daten.Kartensatz;
import de.jaujau.daten.Spieler;
import de.jaujau.daten.Spielerverwaltung;
import de.jaujau.daten.Wert;
import de.jaujau.gui.Dashboard_GUI; import de.jaujau.gui.Dashboard_GUI;
import de.jaujau.karten.Farbe;
import de.jaujau.karten.Kartensatz;
import de.jaujau.karten.Spieler;
import de.jaujau.karten.Wert;
import de.jaujau.spieler.Spielerverwaltung;

View File

@@ -1,14 +1,12 @@
package de.jaujau.spiellogik; package de.jaujau.spiellogik;
import de.jaujau.daten.Kartensatz; import de.jaujau.karten.Farbe;
import de.jaujau.karten.Kartensatz;
import de.jaujau.daten.Wert; import de.jaujau.karten.Spieler;
import de.jaujau.karten.Wert;
import java.util.ArrayList; import java.util.ArrayList;
import de.jaujau.daten.Farbe;
import de.jaujau.daten.Spieler;
/** /**
* Diese Klasse verwaltet Funktionen, die den Spielzug pr<70>fen * Diese Klasse verwaltet Funktionen, die den Spielzug pr<70>fen

View File

@@ -1,4 +1,4 @@
package de.jaujau.daten; package de.jaujau.texturen;
import java.awt.Image; import java.awt.Image;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;

View File

@@ -1,4 +1,4 @@
package de.jaujau.daten; package de.jaujau.texturen;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;

View File

@@ -1,4 +1,4 @@
package de.jaujau.daten; package de.jaujau.texturen;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.ArrayList; import java.util.ArrayList;