Board.java
~cpp public class Board {
public int MAX = 20;
public int[][] board = new int [MAX][];
public Board()
{
for(int i=0; i<MAX; i++)
board[i] = new int[MAX];
}
public void PrintScreen()
{
for(int i=0; i<MAX; i++)
{
for(int j=0; j<MAX; j++)
System.out.print(board[i][j] + " ");
System.out.println();
}
System.out.println();
}
}
Apple.java
~cpp import java.util.Random;
public class Apple
{
int x;
int y;
int count = 0;
Random rmd = new Random();
public Apple()
{
x = rmd.nextInt(20);
y = rmd.nextInt(20);
}
public void Exist(Board aBoard)
{
aBoard.board[x][y] = 2;
}
}
Snake.java
~cpp import java.io.IOException;
public class Snake
{
int x, y, bx, by;
public Snake()
{
x = 10;
y = 10;
}
public Snake(Snake aSnake)
{
x = aSnake.bx;
y = aSnake.by;
}
public void Move(Board bo) throws IOException
{
Gone(bo);
System.out.println("움직이고자 하는 방향을 입력하세요");
System.out.println("a : 왼쪽 " + "d : 오른쪽 " + "w : 위쪽 " + "x : 아래쪽");
int select = System.in.read();
while(System.in.read()!='\n')
continue;
switch(select)
{
case 'a':
y--;
break;
case 'd':
y++;
break;
case 'w':
x--;
break;
case 'x':
x++;
}
}
public void Move(Snake aSnake)
{
this.x = aSnake.bx;
this.y = aSnake.by;
}
public void Trace()
{
bx = x;
by = y;
}
public void Exist(Board aBoard)
{
aBoard.board[x][y] = 1;
}
public void Gone(Board aBoard)
{
aBoard.board[x][y] = 0;
}
public boolean EatApple(Board aBoard)
{
if(aBoard.board[x][y] == 2)
return true;
else
return false;
}
}
Snakebite.java
~cpp
import java.io.IOException;
import java.util.Vector;
public class SnakeBite {
public static void main(String[] args) throws IOException{
Board board = new Board();
Apple apple = new Apple();
Vector v = new Vector();
apple.Exist(board);
board.PrintScreen();
Snake[] tSnake = new Snake[400];
for(int i=0; i<400; i++)
tSnake[i] = new Snake();
tSnake[0].Exist(board);
v.addElement(tSnake[0]);
while(true)
{
tSnake[0].Trace();
tSnake[0].Move(board);
if(tSnake[0].EatApple(board))
{
Apple tApple = new Apple();
tApple.Exist(board);
Snake aSnake = new Snake();
v.addElement(aSnake);
apple.count++;
}
tSnake[0].Exist(board);
if(apple.count>=1)
{
for(int j=1; j<v.size(); j++)
{
tSnake[j] = (Snake) v.get(j);
tSnake[j].Trace();
tSnake[j].Move(tSnake[j-1]);
tSnake[j].Exist(board);
}
board.PrintScreen();
for(int j=1; j<v.size(); j++)
tSnake[j].Gone(board);
}
else
board.PrintScreen();
}
}
}
AWT 작업중 BETA 버젼
Board.java
~cpp
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class Board extends Frame{
Image snake, apple;
Image buff;
Graphics gb;
String direction= "";
int[] x = new int[400];
int[] y = new int[400];
int bx, by;
int num;
int difficulty = 100;
Label l1;
Board(String title){
super(title);
snake=getToolkit().getImage(getClass().getResource("/images/Snake1.gif"));
apple=getToolkit().getImage(getClass().getResource("/images/apple.gif"));
x[0] = 220;
y[0] = 220;
MenuBar mb = new MenuBar();
Menu m1 = new Menu("시작");
Menu m2 = new Menu("점수");
Menu m3 = new Menu("난이도");
MenuItem diff1 = new MenuItem("초보");
MenuItem diff2 = new MenuItem("중수");
MenuItem diff3 = new MenuItem("고수");
m3.add(diff1);
m3.add(diff2);
m3.add(diff3);
mb.add(m1);
mb.add(m2);
mb.add(m3);
Panel p1 = new Panel();
Label l1 = new Label("점수 ");
p1.setBackground(Color.WHITE);
p1.add(l1, "South");
this.add(p1, "South");
setMenuBar(mb);
setBounds(300,200,505,505);
setBackground(Color.GRAY);
setVisible(true);
m3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="초보")
difficulty = 200;
else if(e.getActionCommand()=="중수")
difficulty = 100;
else if(e.getActionCommand()=="고수")
difficulty = 50;
System.out.println(e.getActionCommand());
}
});
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
direction = KeyEvent.getKeyText(e.getKeyCode());
}
});
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public void Apple(){
Random rmd = new Random();
bx = 40 * (rmd.nextInt(11)+1);
by = 40 * (rmd.nextInt(11)+1);
for(int i=0; i<num ; i++){
if(bx == x[i] && by == y[i])
{
bx = 40 * (rmd.nextInt(11)+1);
by = 40 * (rmd.nextInt(11)+1);
}
}
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
if(gb==null){
buff=createImage(getWidth(), getHeight());
gb=buff.getGraphics();
}
gb.clearRect(0,0, getWidth(), getHeight());
for(int i=0; i<=num ; i++){
gb.drawImage(snake, x[i], y[i], this);
}
gb.drawImage(apple, bx, by, this);
g.drawImage(buff, 0, 0, this);
}
public boolean Alive()
{
if(x[0]<-1 || x[0]>481 || y[0]<39 || y[0]>441)
return false;
for(int j=2; j<num ; j++)
{
if(x[0] == x[j] && y[0] == y[j])
return false;
}
return true;
}
}
Snake.java
~cpp
public class Snake {
int x, y, bx, by;
static int count = 0;
public Snake()
{
x = 220;
y = 220;
}
public Snake(Snake aSnake)
{
x = aSnake.bx;
y = aSnake.by;
}
public void Move(String direction){
if(direction.equals("Right")) x+=20;
else if(direction.equals("Left")) x-=20;
else if(direction.equals("Down")) y+=20;
else if(direction.equals("Up")) y-=20;
}
public void Move(Snake aSnake)
{
this.x = aSnake.bx;
this.y = aSnake.by;
}
public void Trace()
{
bx = x;
by = y;
}
}
~cpp
import java.util.Vector;
import javax.swing.JOptionPane;
public class SnakeBite {
public static void main(String[] args) throws InterruptedException{
Board bo = new Board("스네이크 바이트");
do{
Snake[] tSnake = new Snake[400];
for(int i=0; i<400; i++)
tSnake[i] = new Snake();
bo.Apple();
Vector v = new Vector();
v.addElement(tSnake[0]);
while(bo.Alive()){
tSnake[0].Trace();
tSnake[0].Move(bo.direction);
bo.x[0] = tSnake[0].x;
bo.y[0] = tSnake[0].y;
bo.repaint();
if(tSnake[0].x==bo.bx && tSnake[0].y == bo.by){
bo.Apple();
Snake aSnake = new Snake();
v.addElement(aSnake);
Snake.count++;
bo.num = v.size();
}
if(Snake.count>=1)
{
for(int j=1; j<v.size(); j++)
{
tSnake[j] = (Snake) v.get(j);
tSnake[j].Trace();
tSnake[j].Move(tSnake[j-1]);
bo.x[j] = tSnake[j].x;
bo.y[j] = tSnake[j].y;
}
// bo.l1.setText("점수 : " + String.valueOf(v.size()));
bo.repaint();
}
Thread.sleep(bo.difficulty);
} //뱀이 죽음
JOptionPane.showMessageDialog(null, "죽었습니다.");
JOptionPane.showInputDialog("Enter your name please");
bo.x[0] = 220;
bo.y[0] = 220;
for(int i=1 ; i<v.size() ; i++){
bo.x[i] = 0;
bo.y[i] = 0;
}
bo.direction="";
}while(true); // 게임 종료
}
}