Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / кривая змейка / 21 сообщений из 21, страница 1 из 1
22.01.2012, 19:52:44
    #37626050
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
вот писал небольшую игрушку типа "змейка", но злой WTK 2.5.2 начал на меня ругаться
вот код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayble;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Image;
import java.io.IOException;
private class Snake1 extends MIlet
{
	
  private Display display;
  public void destroyApp(boolean unconditional){notifyDestroyed();}
	public void pauseApp(){}
	 public void startApp()
	{
		Snake snk=new Snake();
		display=Display.getDisplay(this);
		display.setCurrent(snk);
	}

public class Snake extends Canvas
{
	private int HEAD=0;
	private int TAIL=1;
	private int BODY=2;
	private int ACLOCKWISE_TURN=3;
	private int CLOCKWISE_TURN=4;
	
	private int UP=0;
	private int LEFT=1;
	private int RIGHT=2;
	private int DOWN=3;
	private int direction;
	private Image[] images;
	private int imageSize;
	

private class SnakePart extends Object
{
	private int x;
	private int y;
	private int part;
	private int dir;
	
	public SnakePart(int _x, int _y, int _part, int _dir)
	{
		x=_x;
		y=_y;
		part=_part;
		dir=_dir;
		
		private int getPart(){return part;}
		private int getDir(){return dir;}
		private int getX(){return x;}
		private int getY(){return y;}
		private void setPartDir(int _part, int _dir)
		{
			part=_part;
		  if(_dir!=0) dir=_dir;
	  }
	}
	
	private Vector snake;
	private int width;
	private int height;
	private int xHead;
	private int yHead;
	private boolean gameOverFlag=true;
	
	public Snake()
	{
		super();
		images=new Image[20];
		try
		{
			images[0]=Image.createImage("/HeadUp.png");
			images[1]=Image.createImage("/HeadLeft.png");
			images[2]=Image.createImage("/HeadRight.png");
			images[3]=Image.createImage("/HeadDown.png");
			
			images[4]=Image.createImage("/TailUp.png");
			images[5]=Image.createImage("/TailLeft.png");
			images[6]=Image.createImage("/TailRight.png");
			images[7]=Image.createImage("/TailDown.png");
			
			images[8]=Image.createImage("/BodyUp.png");
			images[9]=Image.createImage("/BodyLeft.png");
			images[10]=images[8];
			images[11]=images[9];
			
			images[12]=Image.createImage("/TurnDownLeft.png");
			images[13]=Image.createImage("/TurnUpLeft.png");
			images[14]=Image.createImage("/TurnDownRight.png");
			images[15]=Image.createImage("/TurnUpRight.png");
			
			images[16]=images[14];
			images[17]=images[12];
			images[18]=images[15];
			images[19]=images[13];
		}
		catch (IOEception ioe) {}
		imageSize=images[0].getWidth();
		snake= new Vector();
		width=getWidth();
		height=getHeight();
		xHead=((width/2)/imageSize)*imageSize;
		yHead=((height/2)/imageSize)*imageSize;
		
		SnakePart partS=new SnakePart(xHead,yHead,HEAD,UP);
		snake.addElement(partS);
		partS=new SnakePart(xHead,yHead+imageSize,BODY,UP);
		snake.addElement(partS);
		partS=new SnakePart(xHead,yHead+2*imageSize,TAIL,UP);
		snake.addElement(partS);
		direction=UP;
		gameOverFlag=false;
	}
	
	public void paint(Graphics g)
	{
		g.setColor(0xFFFFFF);
		g.fillRect(0,0,width,height);
		g.setColor(0x000000);
		g.drawRect(1,1,width-3,height-3);
		int snakeLen=snake.size();
		if(gameOverFlag)
		{
			g.drawString("GAME OVER",width/2,height/2-10,g.HCENTER|g.TOP);
			String score=new String("YOUR SCORE: "+snakeLen);
			g.drawString(score,wigth/2,height/2+10,g.HCENTER|g.TOP);
			return;
		}
		else
		{
		 for(int i=0;i<snakeLen;i++)
		 {
		  g.drawImage(images[4*((SnakePart)snake.elementAt(i)).getPart()+((SnakePart)snake.elementAt(i)).getDir()],((SnakePart)snake.elementAt(i)).getX(),((SnakePart)snake.elementAt(i)).getY(),g.HCENTER|g.VCENTER);
		 }
	  }
  }
  
  public void keyPressed(int keyCode)
  {
  	if(!gameOverFlag)
  	{
  		switch(keyCode)
  		{
  			case KEY_NUM2: checkMove(xHead,yHead-imageSize);moveUp();break;
  			case KEY_NUM4: checkMove(xHead-imageSize,yHead);moveLeft();break;
  			case KEY_NUM6: checkMove(xHead+imageSize,yHead);moveRight();break;
  			case KEY_NUM8: checkMove(xHead,yHead+imageSize);moveDown();break;
  		}
  		repaint();
  	}
  public void checkMove(int xH,int yH)
  {
  	for(int i=3;i<snake.size()-1;i++)
  	{
  		if(xH==((SnakePart)(snake.elementAt(i))).getX() && yH==((SnakePart)(snake.elementAt(i))).getY())
  		 gameOverFlag=true;
  	}
  }
  
  private void moveLeft()
  {
  	if(direction!=RIGHT)
  	{
  		xHead-=imageSize;
  		if(xHead<4){gameOverFlag=true;return;}
  		SnakePart head=(SnakePart)(snake.firstElement());
  		if(direction==UP) head.setPartDir(ACLOCKWISE_TURN,LEFT);
  		 else
  		  {
  		  	if(direction==DOWN)head.setPartDir(CLOCKWISE_TURN,LEFT);
  		  	else
  		  	 head.setPartDir(BODY,LEFT);
  		  }
  		  SnakePart sPart=new SnakePart(xHead,yHead,HEAD,LEFT);
  		  snake.insertElementAt(sPart,0);
  		  snake.removeElement(snake.lastElement());
  		  ((SnakePart)snake.lastElement()).setPartDir(TAIL,-1);
  		  direction=LEFT;
  	}
  }
  
  private void moveRight()
  {
  	if(direction!=LEFT)
  	{
  		xHead+=imageSize;
  		if(xHead>width-3){gameOverFlag=true;return;}
  		SnakePart head=(SnakePart)(snake.firstElement());
  		if(direction==UP) head.setPartDir(CLOCKWISE_TURN,RIGHT);
  		 else
  		  {
  		  	if(direction==DOWN)head.setPartDir(ACLOCKWISE_TURN,RIGHT);
  		  	else
  		  	 head.setPartDir(BODY,RIGHT);
  		  }
  		  SnakePart sPart=new SnakePart(xHead,yHead,HEAD,LEFT);
  		  snake.insertElementAt(sPart,0);
  		  snake.removeElement(snake.lastElement());
  		  ((SnakePart)snake.lastElement()).setPartDir(TAIL,-1);
  		  direction=RIGHT;
  	}
  }
  
  private void moveUp()
  {
  	if(direction!=DOWN)
  	{
  		yHead-=imageSize;
  		if(yHead<4){gameOverFlag=true;return;}
  		SnakePart head=(SnakePart)(snake.firstElement());
  		if(direction==RIGHT) head.setPartDir(ACLOCKWISE_TURN,UP);
  		 else
  		  {
  		  	if(direction==LEFT)head.setPartDir(CLOCKWISE_TURN,UP);
  		  	else
  		  	 head.setPartDir(BODY,UP);
  		  }
  		  SnakePart sPart=new SnakePart(xHead,yHead,HEAD,LEFT);
  		  snake.insertElementAt(sPart,0);
  		  snake.removeElement(snake.lastElement());
  		  ((SnakePart)snake.lastElement()).setPartDir(TAIL,-1);
  		  direction=UP;
  	}
  }
  
  private void moveDown()
  {
  	if(direction!=UP)
  	{
  		yHead+=imageSize;
  		if(yHead<4){gameOverFlag=true;return;}
  		SnakePart head=(SnakePart)(snake.firstElement());
  		if(direction==RIGHT) head.setPartDir(CLOCKWISE_TURN,DOWN);
  		 else
  		  {
  		  	if(direction==LEFT)head.setPartDir(ACLOCKWISE_TURN,DOWN);
  		  	else
  		  	 head.setPartDir(BODY,DOWN);
  		  }
  		  SnakePart sPart=new SnakePart(xHead,yHead,HEAD,LEFT);
  		  snake.insertElementAt(sPart,0);
  		  snake.removeElement(snake.lastElement());
  		  ((SnakePart)snake.lastElement()).setPartDir(TAIL,-1);
  		  direction=DOWN;
  	}
  }
 }



вот что говорит WTK:
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:51: error: illegal start of expression
private int getPart(){return part;};
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:51: error: ';' expected
private int getPart(){return part;};
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:52: error: illegal start of expression
private int getDir(){return dir;}
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:52: error: ';' expected
private int getDir(){return dir;}
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:53: error: illegal start of expression
private int getX(){return x;}
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:53: error: ';' expected
private int getX(){return x;}
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:54: error: illegal start of expression
private int getY(){return y;}
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:54: error: ';' expected
private int getY(){return y;}
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:55: error: illegal start of expression
private void setPartDir(int _part, int _dir)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:55: error: illegal start of expression
private void setPartDir(int _part, int _dir)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:55: error: ';' expected
private void setPartDir(int _part, int _dir)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:55: error: <identifier> expected
private void setPartDir(int _part, int _dir)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:55: error: not a statement
private void setPartDir(int _part, int _dir)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:55: error: ';' expected
private void setPartDir(int _part, int _dir)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:69: error: invalid method declaration; return type required
public Snake()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:154: error: illegal start of expression
public void checkMove(int xH,int yH)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:154: error: illegal start of expression
public void checkMove(int xH,int yH)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:154: error: ';' expected
public void checkMove(int xH,int yH)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:154: error: <identifier> expected
public void checkMove(int xH,int yH)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:154: error: not a statement
public void checkMove(int xH,int yH)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:154: error: ';' expected
public void checkMove(int xH,int yH)
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:163: error: illegal start of expression
private void moveLeft()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:163: error: illegal start of expression
private void moveLeft()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:163: error: ';' expected
private void moveLeft()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:185: error: illegal start of expression
private void moveRight()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:185: error: illegal start of expression
private void moveRight()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:185: error: ';' expected
private void moveRight()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:207: error: illegal start of expression
private void moveUp()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:207: error: illegal start of expression
private void moveUp()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:207: error: ';' expected
private void moveUp()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:229: error: illegal start of expression
private void moveDown()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:229: error: illegal start of expression
private void moveDown()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:229: error: ';' expected
private void moveDown()
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:250: error: reached end of file while parsing
}
^
C:\Users\Acer\j2mewtk\2.5.2\apps\Snake1\src\Snake1.java:260: error: reached end of file while parsing

^


Что за ошибка "error: ';' expected
private int getPart(){return part;};" ????
...
Рейтинг: 0 / 0
22.01.2012, 20:50:42
    #37626099
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
9ik ,

Код: java
1.
2.
3.
4.
5.
6.
7.
public SnakePart(int _x, int _y, int _part, int _dir)
{
    x=_x;
    y=_y;
    part=_part;
    dir=_dir;
} 
...
Рейтинг: 0 / 0
22.01.2012, 23:50:25
    #37626226
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
Ruslan.Isbarov,

хорошо, со скобками я немного исправил, но что за ошибка error: illegal start of expression
private int getPart(){return part;}
и


error: ';' expected
private int getPart(){return part;}
...
Рейтинг: 0 / 0
23.01.2012, 00:01:25
    #37626243
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
9ik , ну а если еще раз как следует присмотреться, ничего странного не замечаете в приведенном ниже фрагменте кода?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public SnakePart(int _x, int _y, int _part, int _dir)
	{
		x=_x;
		y=_y;
		part=_part;
		dir=_dir;
		
		private int getPart(){return part;}
		private int getDir(){return dir;}
		private int getX(){return x;}
		private int getY(){return y;}
		private void setPartDir(int _part, int _dir)
		{
			part=_part;
		  if(_dir!=0) dir=_dir;
	  }
	}
...
Рейтинг: 0 / 0
23.01.2012, 10:54:12
    #37626466
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
Ruslan.Isbarov,

да вроде нормально все...извините, если что не так, просто я только начинаю разбираться в ООП
...
Рейтинг: 0 / 0
23.01.2012, 11:08:54
    #37626481
Miha_S7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
9ik,

расскажите, что вы хотели, чтобы этот код делал и почему написали именно так
...
Рейтинг: 0 / 0
23.01.2012, 11:09:18
    #37626482
Miha_S7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
я про тот кусок, который привёл Ruslan.Isbarov
...
Рейтинг: 0 / 0
23.01.2012, 11:13:50
    #37626491
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
9ikда вроде нормально всеметоды getPart, getDir, ... не могут находиться в конструкторе. впрочем, и в других методах тоже )
...
Рейтинг: 0 / 0
23.01.2012, 11:29:41
    #37626507
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
Miha_S79ik,

расскажите, что вы хотели, чтобы этот код делал и почему написали именно так

Здесь у меня каждая часть змеи будет представлена объектом класса SnakePart, который будет содержать тип части, координаты и направление движения. Ну и по правилам хорошего тона программирования работу с внутренними полями нового класса организовал через дополнительные методы.
...
Рейтинг: 0 / 0
23.01.2012, 11:44:43
    #37626543
Miha_S7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
9ik,

вы, если пока не особо ориентируетесь, лучше не увлекайтесь вложенными классами. Сделайте отдельные файлы для классов. Сразу станет понятней
...
Рейтинг: 0 / 0
23.01.2012, 11:48:00
    #37626556
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
Miha_S7,

и каким образом это сделать? и еще, вот что эта ошибка от меня хочет? error: illegal start of expression
public void checkMove(int xH,int yH)
...
Рейтинг: 0 / 0
23.01.2012, 11:54:30
    #37626573
Miha_S7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
9ik,

у вас во многих местах незакрывающиеся блоки
...
Рейтинг: 0 / 0
23.01.2012, 11:56:34
    #37626584
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
Miha_S7,
странно, я вроде проверял, со скобками не должно быть ошибок..
...
Рейтинг: 0 / 0
23.01.2012, 12:11:13
    #37626615
Miha_S7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
9ik,

J2ME не имею, поэтому не компилил. Сами пробуйте
...
Рейтинг: 0 / 0
23.01.2012, 12:26:57
    #37626666
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
Miha_S7,

спасибо большое. но теперь он стал почему-то ругаться на вектор error: cannot find symbol
private Vector snake;
...
Рейтинг: 0 / 0
23.01.2012, 12:32:22
    #37626679
Miha_S7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
...
Рейтинг: 0 / 0
23.01.2012, 12:38:34
    #37626696
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
Miha_S7,

к сожалению, здесь все на английском, просто здесь скорее всего описание вектора идет вне класса, расширяющего Object
...
Рейтинг: 0 / 0
23.01.2012, 12:39:51
    #37626698
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
9ikздесь все на английскомв гугле: java пакеты
...
Рейтинг: 0 / 0
23.01.2012, 14:01:15
    #37626884
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
grasoff.net,

с пакетами я пока буду разбираться постепенно, но вот почему же на меня ругается с ветором, мне не понятно
вот код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import java.io.IOException;

private class Snake1 extends MIDlet {
    
    private Display display;
  
    public void destroyApp(boolean unconditional){
        notifyDestroyed();
    }
    public void pauseApp(){
    
    }
    public void startApp() {
        Snake snk=new Snake();
        display=Display.getDisplay(this);
        display.setCurrent(snk);
    }

    public class Snake extends Canvas {
        private int HEAD=0;
        private int TAIL=1;
        private int BODY=2;
        private int ACLOCKWISE_TURN=3;
        private int CLOCKWISE_TURN=4;
        
        private int UP=0;
        private int LEFT=1;
        private int RIGHT=2;
        private int DOWN=3;
        private int direction;
        private Image[] images;
        private int imageSize;
    

        private class SnakePart extends Object {
            private int x;
            private int y;
            private int part;
            private int dir;
        
            public SnakePart(int _x, int _y, int _part, int _dir) {
                x    = _x;
                y    = _y;
                part = _part;
                dir  = _dir;
            }
            
            private int getPart(){
                return part;
            }
            private int getDir(){
                return dir;
            }
            private int getX(){
                return x;
            }
            private int getY(){
                return y;
            }
            private void setPartDir(int _part, int _dir) {
                part=_part;
                if(_dir!=0) 
                    dir=_dir;
            }
        }
        
        private Vector snake;
        private int width;
        private int height;
        private int xHead;
        private int yHead;
        private boolean gameOverFlag=true;
        
        public Snake() {
            super();
            images=new Image[20];
            try
            {
                images[0]=Image.createImage("/HeadUp.png");
                images[1]=Image.createImage("/HeadLeft.png");
                images[2]=Image.createImage("/HeadRight.png");
                images[3]=Image.createImage("/HeadDown.png");
                
                images[4]=Image.createImage("/TailUp.png");
                images[5]=Image.createImage("/TailLeft.png");
                images[6]=Image.createImage("/TailRight.png");
                images[7]=Image.createImage("/TailDown.png");
                
                images[8]=Image.createImage("/BodyUp.png");
                images[9]=Image.createImage("/BodyLeft.png");
                images[10]=images[8];
                images[11]=images[9];
                
                images[12]=Image.createImage("/TurnDownLeft.png");
                images[13]=Image.createImage("/TurnUpLeft.png");
                images[14]=Image.createImage("/TurnDownRight.png");
                images[15]=Image.createImage("/TurnUpRight.png");
                
                images[16]=images[14];
                images[17]=images[12];
                images[18]=images[15];
                images[19]=images[13];
            }
            catch (IOException ioe) {
            
            }
            imageSize=images[0].getWidth();
            snake= new Vector();
            width=getWidth();
            height=getHeight();
            xHead=((width/2)/imageSize)*imageSize;
            yHead=((height/2)/imageSize)*imageSize;
            
            SnakePart partS=new SnakePart(xHead,yHead,HEAD,UP);
            snake.addElement(partS);
            partS=new SnakePart(xHead,yHead+imageSize,BODY,UP);
            snake.addElement(partS);
            partS=new SnakePart(xHead,yHead+2*imageSize,TAIL,UP);
            snake.addElement(partS);
            direction=UP;
            gameOverFlag=false;
        }
        
        public void paint(Graphics g) {
            g.setColor(0xFFFFFF);
            g.fillRect(0,0,width,height);
            g.setColor(0x000000);
            g.drawRect(1,1,width-3,height-3);
            int snakeLen=snake.size();
            if(gameOverFlag) {
                g.drawString("GAME OVER",width/2,height/2-10,g.HCENTER|g.TOP);
                String score=new String("YOUR SCORE: "+snakeLen);
                g.drawString(score,wigth/2,height/2+10,g.HCENTER|g.TOP);
                return;
            } else {
                for(int i=0;i<snakeLen;i++) {
                    g.drawImage(images[4*((SnakePart)snake.elementAt(i)).getPart()+((SnakePart)snake.elementAt(i)).getDir()],((SnakePart)snake.elementAt(i)).getX(),((SnakePart)snake.elementAt(i)).getY(),g.HCENTER|g.VCENTER);
                }
            }
        }
      
        public void keyPressed(int keyCode) {
            if(!gameOverFlag) {
                switch(keyCode) {
                    case KEY_NUM2: checkMove(xHead,yHead-imageSize);moveUp();break;
                    case KEY_NUM4: checkMove(xHead-imageSize,yHead);moveLeft();break;
                    case KEY_NUM6: checkMove(xHead+imageSize,yHead);moveRight();break;
                    case KEY_NUM8: checkMove(xHead,yHead+imageSize);moveDown();break;
                }
                repaint();
            }
        }
        public void checkMove(int xH,int yH) {
            for(int i=3;i<snake.size()-1;i++) {
                if(xH==((SnakePart)(snake.elementAt(i))).getX() && yH==((SnakePart)(snake.elementAt(i))).getY())
                    gameOverFlag=true;
            }
        }
      
        private void moveLeft() {
            if(direction!=RIGHT) {
                xHead-=imageSize;
                if(xHead<4){
                    gameOverFlag=true;return;
                }
                SnakePart head=(SnakePart)(snake.firstElement());
                if(direction==UP) 
                    head.setPartDir(ACLOCKWISE_TURN,LEFT);
                else {
                    if(direction==DOWN)
                        head.setPartDir(CLOCKWISE_TURN,LEFT);
                    else
                        head.setPartDir(BODY,LEFT);
                }
                SnakePart sPart=new SnakePart(xHead,yHead,HEAD,LEFT);
                snake.insertElementAt(sPart,0);
                snake.removeElement(snake.lastElement());
                ((SnakePart)snake.lastElement()).setPartDir(TAIL,-1);
                direction=LEFT;
            }
        }
      
        private void moveRight() {
            if(direction!=LEFT) {
                xHead+=imageSize;
                if(xHead>width-3){
                    gameOverFlag=true;return;
                }
                SnakePart head=(SnakePart)(snake.firstElement());
                if(direction==UP)
                    head.setPartDir(CLOCKWISE_TURN,RIGHT);
                else {
                    if(direction==DOWN)
                        head.setPartDir(ACLOCKWISE_TURN,RIGHT);
                    else
                        head.setPartDir(BODY,RIGHT);
                }
                SnakePart sPart=new SnakePart(xHead,yHead,HEAD,LEFT);
                snake.insertElementAt(sPart,0);
                snake.removeElement(snake.lastElement());
                ((SnakePart)snake.lastElement()).setPartDir(TAIL,-1);
                direction=RIGHT;
            }
        }
      
        private void moveUp() {
            if(direction!=DOWN) {
                yHead-=imageSize;
                if(yHead<4){
                    gameOverFlag=true;return;
                }
                SnakePart head=(SnakePart)(snake.firstElement());
                if(direction==RIGHT)
                    head.setPartDir(ACLOCKWISE_TURN,UP);
                else {
                    if(direction==LEFT)
                        head.setPartDir(CLOCKWISE_TURN,UP);
                    else
                        head.setPartDir(BODY,UP);
                }
                SnakePart sPart=new SnakePart(xHead,yHead,HEAD,LEFT);
                snake.insertElementAt(sPart,0);
                snake.removeElement(snake.lastElement());
                ((SnakePart)snake.lastElement()).setPartDir(TAIL,-1);
                direction=UP;
            }
        }
      
        private void moveDown() {
            if(direction!=UP) {
                yHead+=imageSize;
                if(yHead<4){
                    gameOverFlag=true;return;
                }
                SnakePart head=(SnakePart)(snake.firstElement());
                if(direction==RIGHT)
                    head.setPartDir(CLOCKWISE_TURN,DOWN);
                else {
                    if(direction==LEFT)
                        head.setPartDir(ACLOCKWISE_TURN,DOWN);
                    else
                        head.setPartDir(BODY,DOWN);
                }
                SnakePart sPart=new SnakePart(xHead,yHead,HEAD,LEFT);
                snake.insertElementAt(sPart,0);
                snake.removeElement(snake.lastElement());
                ((SnakePart)snake.lastElement()).setPartDir(TAIL,-1);
                direction=DOWN;
            }
        }
     }
}
...
Рейтинг: 0 / 0
23.01.2012, 14:05:31
    #37626893
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
потому что он у вас не импортирован, по дефолту импортится только java.lang пакет
...
Рейтинг: 0 / 0
23.01.2012, 14:33:09
    #37626976
9ik
9ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кривая змейка
забыл ник,

чего импортиться?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / кривая змейка / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]