Skip to content

Commit 6f86ca1

Browse files
authored
cloth that had been on his head
and the cloth that had been on his head, not lying with the linen cloths, but rolled up in a place by itself. (John 20:7)
1 parent 163a1f2 commit 6f86ca1

1 file changed

Lines changed: 272 additions & 0 deletions

File tree

  • Multithreading/task23/task2312/Snake-4
Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,272 @@
1+
2+
//and the cloth that had been on his head, not lying with the linen cloths, but rolled up in a place by itself. (John 20:7)
3+
4+
------------------------------------------------------Room.java---------------------------------------------------------------
5+
package com.javarush.task.task23.task2312;
6+
7+
8+
public class Room {
9+
public static void main(String[] args) {}
10+
}
11+
------------------------------------------------------------------------------------------------------------------------------
12+
13+
14+
------------------------------------------------------Snake.java--------------------------------------------------------------
15+
package com.javarush.task.task23.task2312;
16+
17+
18+
public class Snake {
19+
}
20+
------------------------------------------------------------------------------------------------------------------------------
21+
22+
23+
------------------------------------------------------Mouse.java--------------------------------------------------------------
24+
package com.javarush.task.task23.task2312;
25+
26+
27+
public class Mouse {
28+
private int x, y;
29+
30+
public Mouse(int x, int y) {
31+
this.x = x;
32+
this.y = y;
33+
}
34+
35+
public int getX() {
36+
return x;
37+
}
38+
39+
public int getY() {
40+
return y;
41+
}
42+
}
43+
------------------------------------------------------------------------------------------------------------------------------
44+
45+
46+
------------------------------------------------------SnakeSection.java-------------------------------------------------------
47+
package com.javarush.task.task23.task2312;
48+
49+
50+
public class SnakeSection {
51+
}
52+
------------------------------------------------------------------------------------------------------------------------------
53+
54+
55+
------------------------------------------------------SnakeDirection.java-----------------------------------------------------
56+
package com.javarush.task.task23.task2312;
57+
58+
59+
public enum SnakeDirection {
60+
}
61+
------------------------------------------------------------------------------------------------------------------------------
62+
63+
64+
------------------------------------------------------KeyboardObserver.java---------------------------------------------------
65+
package com.javarush.task.task23.task2312;
66+
67+
import javax.swing.*;
68+
import java.awt.*;
69+
import java.awt.event.KeyEvent;
70+
import java.awt.event.KeyListener;
71+
import java.util.Queue;
72+
import java.util.concurrent.ArrayBlockingQueue;
73+
74+
import java.awt.event.FocusEvent;
75+
import java.awt.event.FocusListener;
76+
77+
public class KeyboardObserver extends Thread
78+
{
79+
private Queue<KeyEvent> keyEvents = new ArrayBlockingQueue<KeyEvent>(100);
80+
81+
private JFrame frame;
82+
83+
@Override
84+
public void run()
85+
{
86+
frame = new JFrame("KeyPress Tester");
87+
frame.setTitle("Transparent JFrame Demo");
88+
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
89+
90+
frame.setUndecorated(true);
91+
frame.setSize(400, 400);
92+
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
93+
frame.setLayout(new GridBagLayout());
94+
95+
frame.setOpacity(0.0f);
96+
frame.setVisible(true);
97+
98+
frame.addFocusListener(new FocusListener()
99+
{
100+
@Override
101+
public void focusGained(FocusEvent e)
102+
{
103+
//do nothing
104+
}
105+
106+
@Override
107+
public void focusLost(FocusEvent e)
108+
{
109+
System.exit(0);
110+
}
111+
});
112+
113+
114+
frame.addKeyListener(new KeyListener()
115+
{
116+
117+
public void keyTyped(KeyEvent e)
118+
{
119+
//do nothing
120+
}
121+
122+
public void keyReleased(KeyEvent e)
123+
{
124+
//do nothing
125+
}
126+
127+
public void keyPressed(KeyEvent e)
128+
{
129+
keyEvents.add(e);
130+
}
131+
});
132+
}
133+
134+
135+
public boolean hasKeyEvents()
136+
{
137+
return !keyEvents.isEmpty();
138+
}
139+
140+
public KeyEvent getEventFromTop()
141+
{
142+
return keyEvents.poll();
143+
}
144+
}
145+
------------------------------------------------------------------------------------------------------------------------------
146+
147+
/*
148+
Змейка(3)
149+
Отлично. Я еще добавил класс KeyboardObserver на будущее.
150+
Изучи его внимательно. Пригодится.
151+
Начнем с самого простого — класса Mouse.
152+
Мышь не будет двигаться и у нее будут только координаты и все.
153+
Добавь два приватных поля в класс Mouse: x и y типа int.
154+
Требования:
155+
1. Внимательно изучи класс KeyboardObserver.
156+
2. В классе Mouse должно существовать поле x типа int, доступ к которому разрешен только в пределах этого класса.
157+
3. В классе Mouse должно существовать поле y типа int, доступ к которому разрешен только в пределах этого класса.
158+
Змейка(2)
159+
Теперь самое интересное — как будет устроена змея.
160+
Что можно сказать о змее:
161+
а) По сути — змея это набор кусочков — клеточек. Но точно известно, что один из них — голова.
162+
б) У змеи есть направление движения.
163+
Так что нам еще понадобятся классы:
164+
SnakeSection — кусочек змеи.
165+
SnakeDirection — класс (enum) будет описывать направление движения змеи.
166+
Создай классы SnakeSection и SnakeDirection.
167+
Требования:
168+
1. Класс SnakeSection должен быть создан в отдельном файле.
169+
2. Перечисление(enum) SnakeDirection должно быть создано в отдельном файле.
170+
Змейка(1)
171+
А теперь напишем игру "змейка".
172+
Для этого нам понадобятся:
173+
а) собственно сама змея (класс Snake)
174+
б) комната, в которой она будет ползать (класс Room)
175+
в) мыши, которых она будет есть (класс Mouse)
176+
Создай классы Snake, Room, Mouse
177+
Не забудь создать метод public static void main(String[] args) в классе Room.
178+
------------------------------------------------------Room.java---------------------------------------------------------------
179+
package com.javarush.task.task23.task2312;
180+
public class Room {
181+
public static void main(String[] args) {}
182+
}
183+
------------------------------------------------------------------------------------------------------------------------------
184+
------------------------------------------------------Snake.java--------------------------------------------------------------
185+
package com.javarush.task.task23.task2312;
186+
public class Snake {
187+
}
188+
------------------------------------------------------------------------------------------------------------------------------
189+
------------------------------------------------------Mouse.java--------------------------------------------------------------
190+
package com.javarush.task.task23.task2312;
191+
192+
193+
public class Mouse {
194+
private int x, y;
195+
}
196+
------------------------------------------------------------------------------------------------------------------------------
197+
------------------------------------------------------SnakeSection.java-------------------------------------------------------
198+
package com.javarush.task.task23.task2312;
199+
public class SnakeSection {
200+
}
201+
------------------------------------------------------------------------------------------------------------------------------
202+
------------------------------------------------------SnakeDirection.java-----------------------------------------------------
203+
package com.javarush.task.task23.task2312;
204+
public enum SnakeDirection {
205+
}
206+
------------------------------------------------------------------------------------------------------------------------------
207+
------------------------------------------------------KeyboardObserver.java---------------------------------------------------
208+
package com.javarush.task.task23.task2312;
209+
import javax.swing.*;
210+
import java.awt.*;
211+
import java.awt.event.KeyEvent;
212+
import java.awt.event.KeyListener;
213+
import java.util.Queue;
214+
import java.util.concurrent.ArrayBlockingQueue;
215+
import java.awt.event.FocusEvent;
216+
import java.awt.event.FocusListener;
217+
public class KeyboardObserver extends Thread
218+
{
219+
private Queue<KeyEvent> keyEvents = new ArrayBlockingQueue<KeyEvent>(100);
220+
private JFrame frame;
221+
@Override
222+
public void run()
223+
{
224+
frame = new JFrame("KeyPress Tester");
225+
frame.setTitle("Transparent JFrame Demo");
226+
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
227+
frame.setUndecorated(true);
228+
frame.setSize(400, 400);
229+
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
230+
frame.setLayout(new GridBagLayout());
231+
frame.setOpacity(0.0f);
232+
frame.setVisible(true);
233+
frame.addFocusListener(new FocusListener()
234+
{
235+
@Override
236+
public void focusGained(FocusEvent e)
237+
{
238+
//do nothing
239+
}
240+
@Override
241+
public void focusLost(FocusEvent e)
242+
{
243+
System.exit(0);
244+
}
245+
});
246+
frame.addKeyListener(new KeyListener()
247+
{
248+
public void keyTyped(KeyEvent e)
249+
{
250+
//do nothing
251+
}
252+
public void keyReleased(KeyEvent e)
253+
{
254+
//do nothing
255+
}
256+
public void keyPressed(KeyEvent e)
257+
{
258+
keyEvents.add(e);
259+
}
260+
});
261+
}
262+
public boolean hasKeyEvents()
263+
{
264+
return !keyEvents.isEmpty();
265+
}
266+
public KeyEvent getEventFromTop()
267+
{
268+
return keyEvents.poll();
269+
}
270+
}
271+
------------------------------------------------------------------------------------------------------------------------------
272+
*/

0 commit comments

Comments
 (0)