Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 4 KB
import java.util.*;
import java.io.*;
class Palya {
int sordb = 16;
int oszlopdb = 10;
int[][] tabla;
int ls, lo;
BufferedReader bemenet =
new BufferedReader(new InputStreamReader(System.in));
public Palya(){
tabla = new int[sordb][oszlopdb];
Random rnd = new Random();
for(int i=0; i<sordb; i++){
for(int j=0; j<oszlopdb; j++){
tabla[i][j] = rnd.nextInt(5)+1;
}
}
}
public Palya(int ms, int mo){
sordb = ms;
oszlopdb = mo;
tabla = new int[sordb][oszlopdb];
Random rnd = new Random();
for(int i=0; i<sordb; i++){
for(int j=0; j<oszlopdb; j++){
tabla[i][j] = rnd.nextInt(5)+1;
}
}
}
public void ki(){
System.out.println("A játék állása: ");
System.out.println();
System.out.println(" 0123456789");
System.out.println(" ----------");
for(int i=0; i<sordb; i++){
String ind = Integer.toString(i);
if(ind.length()==1) ind = " "+ind;
System.out.print(ind+"|");
for(int j=0; j<oszlopdb; j++){
if(tabla[i][j] > 0){
System.out.print(tabla[i][j]);
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
public boolean vanlepes(){
String s;
String[] koord;
do{
System.out.print("x y = ");
try{
s = bemenet.readLine();
if(s.length() == 0) return false;
koord = s.split("\\s");
ls = Integer.parseInt(koord[0]);
lo = Integer.parseInt(koord[1]);
}
catch(IOException e){
System.out.println("Input hiba");
System.exit(1);
}
}
while (ls < 0 || lo < 0 || ls >= sordb || lo >= oszlopdb);
return true;
}
public boolean tartomany(int i, int j){
int szin = tabla[i][j];
int db = 0;
if(szin != 0){
if (i - 1 >= 0 && tabla[i - 1][j] == szin) db++;
if (i + 1 < sordb && tabla[i + 1][j] == szin) db++;
if (j - 1 >= 0 && tabla[i][j - 1] == szin) db++;
if (j + 1 < oszlopdb && tabla[i][j + 1] == szin) db++;
}
return (db > 0);
}
public boolean lehet_lepni(){
for(int i=0; i < sordb; i++){
for(int j=0; j<oszlopdb; j++){
if(tartomany(i,j)){
return true;
}
}
}
return false;
}
public void lepes(){
if( tartomany(ls,lo)){
int sz = tabla[ls][lo];
kijelol(ls,lo,sz);
potyogtat();
eltol();
}
}
private void kijelol(int sor, int oszlop, int szin){
tabla[sor][oszlop] = 0;
if (sor - 1 >= 0 && tabla[sor - 1][oszlop] == szin) kijelol(sor-1,oszlop,szin);
if (sor + 1 < sordb && tabla[sor + 1][oszlop] == szin) kijelol(sor+1,oszlop,szin);
if (oszlop - 1 >= 0 && tabla[sor][oszlop - 1] == szin) kijelol(sor,oszlop-1,szin);
if (oszlop + 1 < oszlopdb && tabla[sor][oszlop + 1] == szin) kijelol(sor,oszlop+1,szin);
}
private void le(int oszlop){
int db = 0;
for(int j = sordb-1;j>=0;j--){
if(tabla[j][oszlop]>0){
if(db >0){
tabla[j+db][oszlop]=tabla[j][oszlop];
tabla[j][oszlop]=0;
}
} else {
db++;
}
}
}
private void potyogtat(){
for(int i = 0; i < oszlopdb; i++){
le(i);
}
}
private void bal(int ol,int db){
for(int i=0; i<sordb; i++){
tabla[i][ol-db] = tabla[i][ol];
tabla[i][ol] = 0;
}
}
private void eltol(){
int ures = 0;
for(int ol = 0; ol < oszlopdb; ol++){
if(tabla[sordb-1][ol]>0){
if(ures > 0){
bal(ol,ures);
}
} else {
ures++;
}
}
}
public void eredmeny(){
int marad = 0;
for(int i = 0; i < sordb; i++){
for(int j = 0; j < oszlopdb; j++){
if(tabla[i][j] != 0){
marad++;
}
}
}
System.out.println("Vége a játéknak,");
System.out.println(marad+" négyzet maradt a táblán.");
}
}
public class Klickety{
public static void main(String[] args) throws IOException{
Palya p;
if(args.length == 2){
int ms = Integer.parseInt(args[0]);
int mo = Integer.parseInt(args[1]);
p = new Palya(ms,mo);
} else {
p = new Palya();
}
p.ki();
while(p.lehet_lepni()){
if(p.vanlepes()){
p.lepes();
p.ki();
}
else {
break;
}
}
p.eredmeny();
}
}