powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / игра Sokoban на Java. Помогите, люди умные.
25 сообщений из 66, страница 2 из 3
игра Sokoban на Java. Помогите, люди умные.
    #39192445
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczМеняем 2-мерный массив на 3-мерный и готово.

А физика? Мы ее усложняем?

Ящики с 2-го уровня будут падать на первый если грузчик выталкивает?
Или будут двигаться вместе? А проходы между комнатами будут иметь
третье измерение (низкие двери или высокое окошко) ?
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39192449
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА физика? Мы ее усложняем?

Нет.

maytonЯщики с 2-го уровня будут падать на первый если грузчик выталкивает?

Гравитация это теперь синоним 3D?

maytonИли будут двигаться вместе?
Нет, не будут.

maytonА проходы между комнатами будут иметь
третье измерение (низкие двери или высокое окошко) ?
Какие такие проходы? Стена или пустота эта одна клетка. Нет никакой высоты и никаких дверей и даже комнат.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39192673
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В "грузчике" ящики не падают. Но игру это не слишком упрощает.

P.S. Рассматривайте карту как "вид сверху склада в разрезе" и ненужные вопросы про гравитацию отпадут сами собой.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39192779
Ylle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JonnySKS,

Мне 2 поставили, а какой преподаватель, пока еще не знаю. Обешала яйцы отрезать. А все ппреподаватели говорят, не я, не я, не я... И поэтому без стипенди осталась. А соцсети поэтому заблокировали, что мы не хотим в Эстонии черных, иллегальных иммигрантых. И русские против черных. Хотим вместе поступать против политика Евросоюза, эстонцы и русские. Я знаю по русский и общалась там. Facebook тоже заблокировали, а только на 2 дня. Это против закон.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39192817
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ylle, респект вашему Антону Кексу. Молодец чувак.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39192826
Ylle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Извини Mayton, а кто Антон Кекс?
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39192833
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ты блин даёшь. Это известный эстонец.

https://www.youtube.com/results?search_query=%D0%90%D0%BD%D1%82%D0%BE%D0%BD+%D0%9A%D0%B5%D0%BA%D1%81
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39192915
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YlleJonnySKS,

Мне 2 поставили, а какой преподаватель, пока еще не знаю. Обешала яйцы отрезать. А все ппреподаватели говорят, не я, не я, не я...
С таким отношением к учебе и преподавателям я глубоко сомневаюсь, что причина лишения стипендии какой то отдельный преподаватель или евросоюз в целом.
YlleЭто против закон.
Я конечно не особо осведомлен об Эстонском законодательстве, но хотелось бы посмотреть на запрет блокирования социальных сетей и прочих развлекательных ресурсов в образовательных учреждениях.

Все остальное - политота, с ней в ПТ.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193100
Ylle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JonnySKS,

Российские соцсети для нас снова открыто, жалоба помогала. У нас учоба подругому, не так как обычно. Мы первая экспериментальная группа. Учоба у нас 10 месяца. За это время учимься Phyton, JavaScript, C#, Java, Visual Basic, Access, HTML, CSS, JQuery, XML, Bootstrap, PHP, JNode, Unity, Photshop, Excel, SQL, MySQL, PostgreSQL, серверы и руководство бизнеса. Что дать специалистом, мы сами дольжны делать выбор чего хотим дальше учиться. Выходных у нас нет и прошлый недель приходили чивоники смотерть, мы еще живые или нет.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193146
Ylle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Мой код
Код: 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.
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;

import java.io.FileInputStream;
import java.io.IOException;

public class Map extends JPanel {

	private final int TILE_WIDTH = 20;
	private final int TILE_HEIGHT = 20;
	private final int TILE_SEPARATION = 1;

	private final int TILE_PATH = 0;
	private final int TILE_WALL = 1;
	private final int TILE_BOX = 2;
	private final int TILE_TARGET = 3;
	private final int TILE_PLAYER = 4;

	private int rows;
	private int columns;
	private int[][] mapData;

	private Player player = null;

	public Map() {
		System.out.println("Constructor called!");
	}
	
	public void paintComponent(Graphics g) {
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, getSize().width, getSize().height);

		drawLevel(g);
	}

	public void loadLevel(String filePath) {
		
		try {		
			FileInputStream inputStream = new FileInputStream(filePath);

			rows = inputStream.read();
			columns = inputStream.read();

			mapData = new int[rows][columns];

			for (int row = 0; row < rows; row++) {
				for (int column = 0; column < columns; column++) {
					
					int mapValue = inputStream.read();
					System.out.print(mapValue + " ");
					mapData[row][column] = mapValue;

					if (mapValue == TILE_PLAYER) {
						player = new Player(row, column);
					}

				
			}
				System.out.println("");
			}

			System.out.println("Level size = " + rows + "," + columns);

		} catch (IOException exception) {
			exception.printStackTrace();
		}
 
	}

	private void drawLevel(Graphics g) {
		if (mapData != null) {

			int x = 0;
			int y = 0;

			// Map drawing.
			for (int row = 0; row < rows; row++) {
				for (int column = 0; column < columns; column++) {
					Color tileColor = getTileColor(row, column);
					g.setColor(tileColor);
					g.fillRect(x, y, TILE_WIDTH, TILE_HEIGHT);
					x += TILE_WIDTH + TILE_SEPARATION;

				}
				x = 0;
				y += TILE_HEIGHT + TILE_SEPARATION;
			}

			// Player drawing.
			if (player != null) {
				int playerX = (player.getColumn() * (TILE_WIDTH + TILE_SEPARATION));
				int playerY = (player.getRow() * (TILE_HEIGHT + TILE_SEPARATION));
				player.draw(g, playerX, playerY);
			}
		}
	}

	private Color getTileColor(int row, int column) {
		if (mapData[row][column] == TILE_PATH) {
			return Color.BLACK;
		} else if (mapData[row][column] == TILE_WALL) {
			return Color.GRAY;
		} else if (mapData[row][column] == TILE_BOX) {
			return Color.ORANGE;
		} else if (mapData[row][column] == TILE_TARGET) {
			return Color.RED;
		}
		return Color.YELLOW;
	}

	public void update(int key) {
		if (key == KeyEvent.VK_RIGHT) {
			System.out.println("here?");
			System.out.println("Player is at (" + player.getRow() + "," + player.getColumn() + ")");
			if (player.getColumn() < (columns - 1)) {
				player.setPosition(player.getRow(), player.getColumn() + 1);
			}

          //player.setPosition(...
        } else if(key == KeyEvent.VK_LEFT) {
           
        } else if(key == KeyEvent.VK_DOWN) {
            
        } else if(key == KeyEvent.VK_UP) {
           
        }

        repaint();
	}
 
}
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193150
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ты правильно начал. Допиши обработки для LEFT, DOWN, UP
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193161
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yllemayton,
Мой код

http://www.sql.ru/forum/rules.aspx
Рекомендации пункт 3.

- Отделите загрузку данных в отдельный метод. Вообще загрузка как-то странно реализована. Такой же файл руками не удобно будет редактировать.
- Не используйте конструкции вида if else if else if else... Для цветов идеально бы подошел Map<Tile, Color>. А логика движения она не зависит от нажатой клавиши. От кнопки зависит только направление движения. А логика одинаковая для любого направления. Подумайте над этим прежде чем копипастить.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193168
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На таких начальных условиях можно вообще не делать никаких файлов с ресурсами.
Двумерный массив целых чисел покрывает потребности.

А преподы... подперев щёку сидят и ждут... ну выкати дескыть хоть што нибудь
работающее. Мдя.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193172
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНа таких начальных условиях можно вообще не делать никаких файлов с ресурсами.
Двумерный массив целых чисел покрывает потребности.
Ты читаешь мои мысли.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193206
Ylle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Файлы вообще 4. Остальные 3 здесь.

1. файл Player.java

import java.awt.Color;
import java.awt.Graphics;

public class Player {

private final int PLAYER_WIDTH = 10;
private final int PLAYER_HEIGHT = 10;

private int currentColumn;
private int currentRow;

public Player(int row, int column) {
setPosition(row, column);

//System.out.println("Player created at (" + currentRow + "," + currentColumn + ")");
}

public void setPosition(int row, int column) {
currentRow = row;
currentColumn = column;
}

public int getRow() {
return currentRow;
}

public int getColumn() {
return currentColumn;
}

public void draw(Graphics g, int x, int y) {
g.setColor(Color.GREEN);
g.fillRect(x, y, PLAYER_WIDTH, PLAYER_HEIGHT);
}

}

2. файл Sokoban.java

import javax.swing.JFrame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Sokoban extends JFrame implements KeyListener {

public static final int WINDOW_WIDTH = 500;
public static final int WINDOW_HEIGHT = 500;

private Map map;

public Sokoban() {
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setLocationRelativeTo(null);
setResizable(false);
addKeyListener(this);

map = new Map();
map.loadLevel("level1.skb");
add(map);
}

public static void main(String[] args) {
System.out.println("Sokoban started!");

Sokoban sokoban = new Sokoban();
sokoban.setVisible(true);
}

public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
map.update(key);
}
public void keyReleased(KeyEvent e) {

}
public void keyTyped(KeyEvent e) {

}
}


3. файл level1.skb

0b13 0000 0000 0101 0101 0100 0000 0000
0000 0000 0000 0000 0001 0000 0001 0000
0000 0000 0000 0000 0000 0000 0102 0000
0100 0000 0000 0000 0000 0000 0001 0101
0000 0201 0100 0000 0000 0000 0000 0000
0100 0002 0002 0001 0000 0000 0000 0000
0001 0101 0001 0001 0100 0100 0000 0101
0101 0101 0100 0000 0100 0101 0001 0101
0101 0000 0303 0101 0002 0000 0200 0000
0000 0000 0000 0003 0301 0101 0101 0100
0101 0100 0104 0101 0000 0303 0100 0000
0001 0000 0000 0001 0101 0101 0101 0101
0000 0000 0101 0101 0101 0100 0000 0000
0000 00



Буду дальше думать.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193239
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ylle, ты с SVN работал когда-нибудь?
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193257
Ylle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Нет. Для учоба школа нам свои ноутбуки дала. Есть XAMPP.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193265
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yllemayton,

Нет. Для учоба школа нам свои ноутбуки дала. Есть XAMPP.

Ладно. Я не то имел в виду. Забей.

Смотри если ты объединишь 4 файла в 1 файл
(будет 1 public класс и 3 внутренних)
то мы сможем оперативно поправить весь твой
код в онлайне на https://codeshare.io
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193435
Ylle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Ok! У нас должно быть всех файлы отделно. Код пишем в Sublime Text редакторе. Код запускаем в терминале/консол. например javac Sokoban.java и если ошибки нет, тогда java Sokoban После этого открывается игра. В Sublime должно быть всех 4 файла и перед этого надо идти в папке, где файлы нахожиться. cd desktop/sokoban
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193443
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно. Давай по фичам. Что щас не работает?

Я для себя вижу грузчик (зеленый кубик ходит только вправо).

А еще?
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193448
Ylle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Редактировать здесь можно http://collabedit.com/9yqx3
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193462
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ylle,

У нас санкции ... из за санкций нельзя.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193464
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно. Мне редактирование доступно.
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193469
Ylle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Atum1,

Будешь в Эстонии, научим тебя порбаться против санкции. :)
...
Рейтинг: 0 / 0
игра Sokoban на Java. Помогите, люди умные.
    #39193477
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача изначально неверно побита на классы. Почему-то игрок (player) выделен
в отдельную сущность которая имеет координаты а ящики нет.

Это создаёт некий диссонанс при lifecycle. Получается что мы можем
применять полиморфизм для player а для ящиков делаем просто
ветки if-else.
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / игра Sokoban на Java. Помогите, люди умные.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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