/***这是我自已无聊时做的,看到别人有发,我也发出来看一下,呵呵,不过,我是搞web开发,做的不怎么好,颜色这块没搞好,方块变换也做的不怎么好,数学没学好,模块有点乱***/
/**有木有顶贴的啊!**/
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import javax.swing.JFrame;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;
public class Main extends JFrame {
public Main(String str) throws IOException {
EffectParts parts=new EffectParts();
add(parts);
setSize(400,480);
setTitle(str);
setVisible(true);
setResizable(false);//是否可以调整大小;
setLocationRelativeTo(null);//窗口显示的位置;
//添加一个事件,退出程序事件;
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
}
public static void main(String[] args)throws IOException {
Main main= new Main("俄罗斯方块1.0 bean number one game");
}
}
class EffectParts extends JPanel implements KeyListener, MouseListener {
FileOutputStream file;
FileInputStream fileinput;
int speedstrat = 1000;
JButton start = new JButton("开始");
JButton exit = new JButton("退出");
JButton suspend = new JButton("暂停");
JButton save = new JButton("存储游戏");
JButton entry = new JButton("载入戏");
private int speed = 1;
boolean boo = false;
private int score = 0;
Random ran = new Random();
SuperAdapter adapter = new SuperAdapter();
DiamondTable diamond;
Act[] act = new Act[4];
Act[] actTwo = new Act[4];
int[][] vesselState;
Timer timer;
TimerListener list = null;
String url = "gamesave.txt";
boolean fileboolean = true;
boolean b = false;
// 构造方法
public EffectParts() {
list = new TimerListener();
add(suspend);
add(entry);
add(save, -1);
exit.addMouseListener(adapter.getMouseClose());
start.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
getMouseStart();
requestFocus(true);
}
});
suspend.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
Suspend();
requestFocus(true);
}
});
save.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
try {
Save();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
entry.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
try {
entry();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
setVisible(true);
setLayout(new FlowLayout(FlowLayout.RIGHT));
add(start);
add(exit);
// 实例化方块;
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
// 增加键盘监听器;
this.addKeyListener(this);
this.addMouseListener(this);
vesselState = new int[10][20];
for (int i = 0; i < vesselState.length; i++) {
for (int k = 0; k < vesselState[i].length; k++) {
vesselState[i][k] = 0;
}
}
}
// 重写方法,作用:在面版上绘画
@Override
protected void paintComponent(Graphics arg0) {
super.paintComponent(arg0);
arg0.drawString("分数: " + this.score, 270, 60);
arg0.drawLine(260, 63, 380, 63);
arg0.drawString("速度: " + this.speed, 270, 95);
arg0.drawLine(260, 98, 380, 98);
arg0.drawString("下一个方块", 270, 135);
arg0.drawRect(8, 35, 201, 401);
arg0.drawString("俄罗斯方块1.1", 260, 370);
arg0.drawString("作者:Game石头", 260, 390);
// 生成方块体
if (boo) {
for (int i = 0; i < 4; i++) {
int key = ran.nextInt(4);
// 这里用一个SWITCH来生成不同的四个颜色;
switch (key) {
case 0:
arg0.setColor(Color.BLUE);
break;
case 1:
arg0.setColor(Color.BLACK);
break;
case 2:
arg0.setColor(Color.GRAY);
break;
case 3:
arg0.setColor(Color.PINK);
break;
default:
break;
}
arg0.fillRect(9 + act[i].getX() * 20, 36 + act[i].getY() * 20,
20, 20);
}
// 这里将以出现的方块记录在一个二维数组内;
for (int i = 0; i < vesselState.length; i++) {
for (int k = 0; k < vesselState[i].length; k++) {
if (vesselState[i][k] == 1) {
arg0.fillRect(9 + i * 20, 36 + k * 20, 20, 20);
}
}
}
// 这里显示下一个方块体;
for (int i = 0; i < 4; i++) {
arg0.fillRect(200 + actTwo[i].getX() * 20,
160 + actTwo[i].getY() * 20, 20, 20);
}
}
}
// 这个方法用于载入游戏;
void entry() throws IOException {
File fi=new File(url);
if(!fi.isFile())
{
this.requestFocus(true);
return;
}
fileinput = new FileInputStream(url);
byte[] b = new byte[20];
byte[] bx=new byte[4];
byte[] by=new byte[4];
fileinput.read(bx, 0, bx.length);
fileinput.read(by, 0, by.length);
for(int i=0;i<this.act.length;i++)
{
act[i].setY(by[i]);
act[i].setX(bx[i]);
}
for (int i = 0; i < vesselState.length; i++) {
try {
fileinput.read(b, 0, b.length);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int g=0;g<b.length;g++)
{
vesselState[i][g]=b[g];
}
}
try {
fileinput.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.boo=true;
nextDiamond();
this.requestFocus(true);
repaint();
}
// 这个方法用来存储游戏;
void Save() throws IOException {
File f=new File(url);
if (!this.boo) {
this.requestFocus(true);
return;
}
if(f.isFile())
{
f.delete();
}
this.Suspend();
file = new FileOutputStream(url, fileboolean);
byte[] b;
byte[] b1=new byte[4];
byte[] b2=new byte[4];
for(int i=0;i<this.act.length;i++)
{
b1[i]=(byte)act[i].getX();
b2[i]=(byte)act[i].getY();
}
try {
file.write(b1);
file.write(b2);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for (int i = 0; i < this.vesselState.length; i++) {
b = new byte[20];
for (int k = 9; k < this.vesselState[i].length; k++) {
b[k] = (byte) vesselState[i][k];
}
try {
file.write(b);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
file.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
requestFocus(true);
}
// 这里是一个暂停方法
void Suspend() {
if (this.boo) {
if (this.timer != null) {
if (this.timer.isRunning()) {
this.timer.stop();
}
}
this.boo = false;
this.suspend.setText("继续");
} else {
if (this.timer != null) {
this.timer.start();
}
this.boo = true;
this.suspend.setText("暂停");
}
this.requestFocus(true);
}
// 游戏开始调用这个方法;
public boolean newAct() {
if (this.boo) {
// 随机取方块体样式
int key = ran.nextInt(7) + 1;
// 完成方块生成的数据;
if (actTwo[0] == null) {
diamond = new DiamondTable();
act = diamond.getDiamond(key);
} else {
act = actTwo;
}
this.nextDiamond();
if (!MinMaxShift(0, 1)) {
return false;
}
b = true;
return true;
} else {
return false;
}
}
// 点击开始时事件触发的方法
public void getMouseStart() {
// 清空存储变量的值;
for (int i = 0; i < vesselState.length; i++) {
for (int k = 0; k < vesselState[i].length; k++) {
vesselState[i][k] = 0;
}
}
this.boo = true;
this.score = 0;
this.speed = 1;
this.speedstrat = 1000;
if (timer != null) {
timer.stop();
}
timer = new Timer(speedstrat, list);
// 清空存储方块体样式变量的值;
for (int i = 0; i < 4; i++) {
actTwo[i] = null;
}
if (timer.isRepeats()) {
timer.stop();
}
this.suspend.setText("暂停");
if (start.getText() == "开始") {
start.setText("重置");
}
if (newAct()) {
repaint();
} else {
return;
}
if (boo) {
timer.start();
}
}
// 控制方块不出容量;
private boolean MinMaxShift(int x, int y) {
for (int i = 0; i < 4; i++) {
if ((act[i].getX() + x) < 0 || (act[i].getX() + x) >= 10
|| act[i].getY() + y < 0 || act[i].getY() + y > 19) {
return false;
}
if (vesselState[act[i].getX() + x][act[i].getY() + y] == 1) {
return false;
}
}
return true;
}
// 改变方块的摆放方向
// 改变方块摆放方向
private void changeType() {
Act[] actsan = new Act[4];
for (int i = 0; i < actsan.length; i++) {
actsan[i] = new Act();
actsan[i].setX(act[i].getX());
actsan[i].setY(act[i].getY());
}
for (int i = 0; i < actsan.length; i++) {
if (actsan[i].getX() < 0 || actsan[i].getX() > 9
|| actsan[i].getY() < 0 || actsan[i].getY() > 19) {
if (vesselState[act[i].getX() + 1][act[i].getY()] == 1
|| vesselState[act[i].getX() - 1][act[i].getY()] == 1) {
return;
}
}
}
if ((actsan[2].getX() - actsan[0].getX()) == 1
&& (actsan[3].getX() - actsan[1].getX()) == 1
&& actsan[2].getY() - actsan[0].getY() == 0
&& (actsan[3].getY() - actsan[2].getY() == 1)
&& (actsan[3].getY() - actsan[0].getY() == 1)) {
return;
}
int xx = (actsan[0].getX() + actsan[1].getX() + actsan[2].getX() + actsan[3]
.getX()) / 4;
int yy = (actsan[0].getY() + actsan[1].getY() + actsan[2].getY() + actsan[3]
.getY()) / 4;
for (int i = 0; i < actsan.length; i++) {
actsan[i].setX(xx + yy - act[i].getY());
actsan[i].setY(yy - xx + act[i].getX());
}
for (int i = 0; i < actsan.length; i++) {
if (actsan[i].getX() < 0 || actsan[i].getX() > 9
|| actsan[i].getY() <= 0 || actsan[i].getY() > 19)
return;
else if (vesselState[actsan[i].getX()][actsan[i].getY()] == 1) {
return;
}
}
for (int i = 0; i < actsan.length; i++) {
act[i].setX(actsan[i].getX());
act[i].setY(actsan[i].getY());
}
repaint(9, 36, 201, 401);
}
// 方块移动方法实现;
// 让方块体向左向右方法;
private void Shift(int x, int y) {
if (MinMaxShift(x, y) == false) {
return;
}
if (boo) {
for (int i = 0; i < 4; i++) {
act[i].setX(act[i].getX() + x);
act[i].setY(act[i].getY() + y);
this.repaint(9, 36, 240, 400);
}
}
}
// 向下移动的方法;
// 生成下一个方块体;
private void nextDiamond() {
int key = ran.nextInt(7) + 1;
diamond = new DiamondTable();
actTwo = diamond.getDiamond(key);
}
// 让方块体向下落的方法;
private void down() {
if (!boo) {
return;
}
if (MinMaxShift(0, 1)) {
for (int i = 0; i < 4; i++) {
act[i].setY(act[i].getY() + 1);
}
repaint(9, 36, 240, 400);
} else {
for (int i = 0; i < 4; i++) {
vesselState[act[i].getX()][act[i].getY()] = 1;
}
boolean lean = newAct();
// 这里如果反回的是true;就查看容器中有没有增实,如果有,让他消失;
// 同时让上面的方块落下来;并且加上分;
if (lean) {
boolean iftrue = false;
int index = 19;
int[] count = new int[20];
int value = 0;
for (int i = vesselState[0].length - 1; i >= 0; i--) {
for (int k = vesselState.length - 1; k >= 0; k--) {
value += vesselState[k][i];
if (value == 10) {
count[index] = i;
index--;
}
}
if (value == 0) {
break;
}
value = 0;
}
int val = 0;
// 这个盾环让完整的一行消掉;
for (int i = vesselState[0].length - 1; i >= 0; i--) {
for (int k = vesselState.length - 1; k >= 0; k--) {
if (count[i] > 0) {
vesselState[k][count[i]] = 0;
val += 1;
}
}
}
// 加分方法
if (val != 0) {
if (val / 10 == 1)
this.score += (val);
else if (val / 10 == 2) {
this.score += (val + 10);
} else if (val / 10 == 3) {
this.score += (val + 20);
} else if (val / 10 == 4) {
this.score += (val * 2);
}
val = 0;
}
// 加速度的给显示判断
if (this.score > 2000) {
if (this.score / 2000 <= 9
&& (this.score / 2000) != this.speed) {
this.speed = this.score / 2000;
this.speedstrat = (1000 - this.speed * 100);
if (boo) {
this.timer.stop();
timer = new Timer(speedstrat, list);
timer.start();
}
}
}
// 让整个面容器中的方块体随消失的方块体往下充实;
for (int g = 0; g < 20; g++) {
for (int i = vesselState[0].length - 1; i > 0; i--) {
for (int k = vesselState.length - 1; k >= 0; k--) {
value += vesselState[k][i];
}
for (int k = vesselState.length - 1; k >= 0; k--) {
if (value == 0) {
iftrue = true;
}
if (iftrue) {
vesselState[k][i] = vesselState[k][i - 1];
}
}
value = 0;
}
iftrue = false;
}
}
repaint();
// 这里如果反回来的是false,就让时间监听器停止,游戏也停止;
if (!lean) {
JOptionPane.showMessageDialog(null, "游戏结束!\n game over!", "提示",
1);
boo = false;
timer.stop();
}
}
}
// 键盘事件
@Override
public void keyPressed(KeyEvent arg0) {
if (boo) {
switch (arg0.getKeyCode()) {
case 65:
this.Shift(-1, 0);
break;
case 37:
this.Shift(-1, 0);
break;
case 38:
this.changeType();
break;
case 87:
this.Shift(0, -1);
break;
case 39:
this.Shift(1, 0);
break;
case 68:
this.Shift(1, 0);
break;
case 40:
this.down();
break;
case 83:
this.down();
break;
default:
break;
}
}
// 按下空格键,将调用暂停的方法
if (32 == arg0.getKeyCode()) {
this.Suspend();
}
}
@Override
public void keyReleased(KeyEvent arg0) {
}
@Override
public void keyTyped(KeyEvent arg0) {
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
// 点击面版得到焦点;
@Override
public void mousePressed(MouseEvent arg0) {
int x = arg0.getX();
int y = arg0.getY();
if (x >= 9 && x <= 209 && y >= 10 && y <= 410) {
this.requestFocus();
}
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public class TimerListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
down();
}
}
}
/**
*
* @author Administrator 一个超级适配器事件处理;
*/
class SuperAdapter {
// 鼠标点击退出或开始事件
public MouseListener getMouseClose() {
return new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
int values = JOptionPane.showConfirmDialog(null, "确定退出序程?",
"提示", 2);
if (0 == values) {
System.exit(0);
} else {
return;
}
}
};
}
}
class DiamondTable {
// 这个集合用于存放各中方块模具;
private Map<Integer, Act[]> diamondVessel = null;
private Map<Integer, Map<Integer, Act[]>> diamondMin = new HashMap<Integer, Map<Integer, Act[]>>();
private Act[] act = new Act[4];
// 构造一共19个方块体的样式;
public DiamondTable() {
diamondVessel = new HashMap<Integer, Act[]>();
Act[] act = new Act[4];
// 从这里开始生一种方块样式
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
// 第一种方块的第一个样式;这是个正方体只有一个样式;
act[0].setX(4);
act[0].setY(0);
act[1].setX(4);
act[1].setY(1);
act[2].setX(5);
act[2].setY(0);
act[3].setX(5);
act[3].setY(1);
// 这里存进集合中
diamondVessel.put(1, act);
diamondMin.put(1, diamondVessel);
// //
// 第二种方块的各种样式
diamondVessel = new HashMap<Integer, Act[]>();
// (1)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(3);
act[0].setY(0);
act[1].setX(4);
act[1].setY(0);
act[2].setX(5);
act[2].setY(0);
act[3].setX(6);
act[3].setY(0);
diamondVessel.put(1, act);
// (2)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(4);
act[1].setY(1);
act[2].setX(4);
act[2].setY(2);
act[3].setX(4);
act[3].setY(3);
diamondVessel.put(2, act);
diamondMin.put(2, diamondVessel);
// //
// 第三种方块的各种样式
diamondVessel = new HashMap<Integer, Act[]>();
// (1)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(4);
act[1].setY(1);
act[2].setX(4);
act[2].setY(2);
act[3].setX(5);
act[3].setY(2);
diamondVessel.put(1, act);
// (2)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(4);
act[1].setY(1);
act[2].setX(5);
act[2].setY(0);
act[3].setX(6);
act[3].setY(0);
diamondVessel.put(2, act);
// (3)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(5);
act[1].setY(0);
act[2].setX(5);
act[2].setY(1);
act[3].setX(5);
act[3].setY(2);
diamondVessel.put(3, act);
// (4)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(1);
act[1].setX(5);
act[1].setY(1);
act[2].setX(6);
act[2].setY(0);
act[3].setX(6);
act[3].setY(1);
diamondVessel.put(4, act);
diamondMin.put(3, diamondVessel);
// //
// 第四种方块的各种样式
diamondVessel = new HashMap<Integer, Act[]>();
// //
// (1)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(5);
act[0].setY(0);
act[1].setX(5);
act[1].setY(1);
act[2].setX(5);
act[2].setY(2);
act[3].setX(4);
act[3].setY(2);
diamondVessel.put(1, act);
// (2)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(4);
act[1].setY(1);
act[2].setX(5);
act[2].setY(1);
act[3].setX(6);
act[3].setY(1);
diamondVessel.put(2, act);
// (3)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(4);
act[1].setY(1);
act[2].setX(4);
act[2].setY(2);
act[3].setX(5);
act[3].setY(0);
diamondVessel.put(3, act);
// (4)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(5);
act[1].setY(0);
act[2].setX(6);
act[2].setY(0);
act[3].setX(6);
act[3].setY(1);
diamondVessel.put(4, act);
diamondMin.put(4, diamondVessel);
// //
// 第五种方块的各种样式
diamondVessel = new HashMap<Integer, Act[]>();
// //
// (1)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(4);
act[1].setY(1);
act[2].setX(5);
act[2].setY(1);
act[3].setX(5);
act[3].setY(2);
diamondVessel.put(1, act);
// (2)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(1);
act[1].setX(5);
act[1].setY(0);
act[2].setX(5);
act[2].setY(1);
act[3].setX(6);
act[3].setY(0);
diamondVessel.put(2, act);
diamondMin.put(5, diamondVessel);
// //
// 第六种方块的各种样式
diamondVessel = new HashMap<Integer, Act[]>();
// //
// (1)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(5);
act[0].setY(0);
act[1].setX(5);
act[1].setY(1);
act[2].setX(4);
act[2].setY(1);
act[3].setX(4);
act[3].setY(2);
diamondVessel.put(1, act);
// (2)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(5);
act[1].setY(0);
act[2].setX(5);
act[2].setY(1);
act[3].setX(6);
act[3].setY(1);
diamondVessel.put(2, act);
diamondMin.put(6, diamondVessel);
// //
// 第七种方块的各种样式
diamondVessel = new HashMap<Integer, Act[]>();
// //
// (1)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(4);
act[1].setY(1);
act[2].setX(4);
act[2].setY(2);
act[3].setX(5);
act[3].setY(1);
diamondVessel.put(1, act);
// (2)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(0);
act[1].setX(5);
act[1].setY(0);
act[2].setX(6);
act[2].setY(0);
act[3].setX(5);
act[3].setY(1);
diamondVessel.put(2, act);
// (3)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(5);
act[0].setY(0);
act[1].setX(5);
act[1].setY(1);
act[2].setX(5);
act[2].setY(2);
act[3].setX(4);
act[3].setY(1);
diamondVessel.put(3, act);
// (4)
act = new Act[4];
for (int i = 0; i < act.length; i++) {
act[i] = new Act();
}
act[0].setX(4);
act[0].setY(1);
act[1].setX(5);
act[1].setY(0);
act[2].setX(5);
act[2].setY(1);
act[3].setX(6);
act[3].setY(1);
diamondVessel.put(4, act);
diamondMin.put(7, diamondVessel);
}
int b = 0;
private Random ran = new Random();
// 得到一个方块体样式
public Act[] getDiamond(int i) {
diamondVessel = diamondMin.get(i);
b = diamondVessel.size();
b = ran.nextInt(b) + 1;
act = diamondVessel.get(b);
return act;
}
}
class Act {
int x;
int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}