Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2015, 20:54   #1
Ромашка2002
Пользователь
 
Регистрация: 30.03.2015
Сообщений: 19
По умолчанию Помогите сделать непроходимою картинку!

Делаю 2d игру сделал земное притяжение и прыжок также движение влево вправо. Но не могу сделать землю (картинки в виде полос) сделать непроходимыми что бы герой мог ходить по них.
Ромашка2002 вне форума Ответить с цитированием
Старый 30.03.2015, 21:06   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

На чем делаете-то? Swing, SWT, AWT, FX, веб, ...
И где код попыток? Что именно не получается?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.03.2015, 21:20   #3
Ромашка2002
Пользователь
 
Регистрация: 30.03.2015
Сообщений: 19
По умолчанию

Делаю игру в Эклипс вот код моего класса



import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class Game extends Canvas implements Runnable {
private static final long serialVersionUID = 1L;

private boolean running;

public static int WIDTH = 800;
public static int HEIGHT = 600;
public static String NAME = "TUTORIAL 1";
boolean uppPressed = false;
boolean downPressed = false;
private boolean leftPressed = false;
private boolean rightPressed = false;
public Image fon;
public Image hero;
private static int x = 0;
private static int y = 400;
private long too;


public void start() {
running = true;
new Thread(this).start();
}

public void run() {
long lastTime = System.currentTimeMillis();
long delta;

init();

while(running) {
delta = System.currentTimeMillis() - lastTime;
lastTime = System.currentTimeMillis();
render();
update(delta);
}
}

public void init() {
addKeyListener(new KeyInputHandler());

try {
hero=ImageIO.read(new File("c:\\man.png"));

}
catch (Exception ex) {}

}
public void render() {
BufferStrategy bs = getBufferStrategy();
if (bs == null) {
createBufferStrategy(2);
requestFocus();
return;
}

Graphics gr = bs.getDrawGraphics();
super.update(gr);
gr.fillRect(0, 480, 800, 20);


gr.drawImage(hero,x,y,null);
gr.dispose();
bs.show();
}

public void update(long delta) {
if (leftPressed == true) {
x--;


}

if (rightPressed == true) {
x++;

}
if((downPressed == true)&&(y!=400)){
y++;

}
if((uppPressed == true)&&(y>=0))
{
y=y-150;
uppPressed=false;
too+=delta;

downPressed=true;




}

}
public static void main(String[] args) {
Game game = new Game();
game.setPreferredSize(new Dimension(WIDTH, HEIGHT));
JFrame frame = new JFrame(Game.NAME);
frame.setDefaultCloseOperation(JFra me.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(game, BorderLayout.CENTER);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
game.start();
}

private class KeyInputHandler extends KeyAdapter {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
leftPressed = true;

}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
rightPressed = true;
}
if(e.getKeyCode()== KeyEvent.VK_DOWN){
downPressed=true;
}
if(e.getKeyCode()== KeyEvent.VK_UP){
uppPressed=true;
}
}

public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
leftPressed = false;
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
rightPressed = false;
}
if(e.getKeyCode()== KeyEvent.VK_DOWN){
}
if(e.getKeyCode()== KeyEvent.VK_UP){

}
}
}
}
Ромашка2002 вне форума Ответить с цитированием
Старый 30.03.2015, 21:20   #4
Ромашка2002
Пользователь
 
Регистрация: 30.03.2015
Сообщений: 19
По умолчанию

Картинки возьмите любые
Ромашка2002 вне форума Ответить с цитированием
Старый 30.03.2015, 21:29   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Делаю игру в Эклипс
Эклипс это IDE. В ней можно разрабатывать проекты на любом из вышеописанных UI фреймворков, как и вообще не под десктоп. Также как и в любой другой Java IDE (Idea, NetBeans, ...)

Так и что в этом коде смотреть? Здесь не видно попыток реализовать то, что вы хотели, только просто передвижение.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 30.03.2015 в 21:31.
Alex11223 вне форума Ответить с цитированием
Старый 30.03.2015, 21:53   #6
Ромашка2002
Пользователь
 
Регистрация: 30.03.2015
Сообщений: 19
По умолчанию

Так вот я и обращаюсь за помощью нежен пример где в окне есть главный герой с движением и земля по которой он ходит что то вроде этого
Ромашка2002 вне форума Ответить с цитированием
Старый 30.03.2015, 22:04   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так вы просите просто реализовать за вас это, а надо подумать, попытаться что-то сделать самому, рассказать об этом и задать более конкретные вопросы (которые обязательно появятся после этих действия). Программирование это ж не только копипастинг примеров.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.03.2015, 22:07   #8
Ромашка2002
Пользователь
 
Регистрация: 30.03.2015
Сообщений: 19
По умолчанию

if((x<x1)&&(x+hero.getWidth()>=x1)
&&(y<y1)&&(y+hero.getHeight()>=y 1)
||(x<x1)&&(x<=x1+figure.getWidth())
&&(y>y1)&&(y<=y1+figure.getHeight() ))
{
}
Вот я проверяю когда главный герой с любой стороны пересекается с картинкой пола а что писать в скобках чтобы он не проходил сквозь эту картинку?
Ромашка2002 вне форума Ответить с цитированием
Старый 30.03.2015, 22:09   #9
Ромашка2002
Пользователь
 
Регистрация: 30.03.2015
Сообщений: 19
По умолчанию

hero-главный герой
figure- картинка пола
Ромашка2002 вне форума Ответить с цитированием
Старый 30.03.2015, 22:13   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну видимо надо делать эту проверку до выполнения передвижения и не переходить к передвижению (изменению координат): например, с помощью if-else, или return из метода.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать картинку ссылкой? nazar-com HTML и CSS 4 06.12.2013 12:18
Как сделать всплывающую картинку ? Anatoluu Общие вопросы Delphi 5 15.03.2011 08:48
Как сделать разрезанную картинку? psywalker HTML и CSS 18 03.07.2008 16:25
Как сделать картинку фоном фрейма? C0derr Компоненты Delphi 12 20.08.2007 00:43