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

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

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

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

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

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

то есть как сказать что х и у = false тогда в этих скобках?
Ромашка2002 вне форума Ответить с цитированием
Старый 30.03.2015, 22:19   #12
Ромашка2002
Пользователь
 
Регистрация: 30.03.2015
Сообщений: 19
По умолчанию

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

Код:
if (!(уперся_в_препятствие))
{
    передвижение;
}
или
Код:
if (уперся_в_препятствие)
    return;

передвижение;
(под передвижением наверно имеется в виду тот код, где if (leftPressed == true) x--; и т.д., там кстати можно выкинуть == true, оно и так bool)

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

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

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

А зачем он вообще летать умеет?

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

он умеет прыгать на 150 px вверх он земное притяжение не даем ему летать
Ромашка2002 вне форума Ответить с цитированием
Старый 30.03.2015, 22:39   #17
Ромашка2002
Пользователь
 
Регистрация: 30.03.2015
Сообщений: 19
По умолчанию

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

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


http://cs621317.vk.me/v621317009/1c6a1/pK0wkoVU6ro.jpg
вот картинки описание проблемы и пробы ее нейтрализовать в большом коментарее

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;
public Image ho;

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"));
fon=ImageIO.read(new File("c:\\fon2.jpg"));

}
catch (Exception ex) {}

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

Graphics gr = bs.getDrawGraphics();
super.update(gr);
gr.drawImage(fon,0,0,800,600,null);

//гланая земля
gr.fillRect(0, 480, 300, 20);
gr.fillRect(430, 480, 400, 20);
//конец
//яма 1
gr.fillRect(300, 570, 130, 20);
gr.fillRect(430, 490, 20, 100);
gr.fillRect(280, 490, 20, 100);
gr.drawImage(hero,x,y,null);

gr.dispose();
bs.show();
}

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


}

if (rightPressed) {
x++;

}
if((downPressed)){
y++;

}

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

downPressed=true;
}


//главная земля
if(y==400)
{
downPressed=false;
}
//конец
//яма 1
if((x>=300)&&(x<=400))
{
downPressed=true;

}
if(y==480)
{
downPressed=false;
}
/*вот тут оно проверяет правильно но кнопку пользователи может мно раз нажать тогда он пройдет
* сквозь приделы(( мне нужно чтобы он не прошол влево и вправо ПОМОГИТЕ
if(y<=400&&y>=480&&x==400)
{
rightPressed=false;
}
if(y<=400&&y>=480&&x==300)
{
leftPressed=false;
}
*/



}
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 вне форума Ответить с цитированием
Старый 31.03.2015, 22:23   #20
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от Ромашка2002 Посмотреть сообщение
Делаю 2d игру сделал земное притяжение и прыжок также движение влево вправо. Но не могу сделать землю (картинки в виде полос) сделать непроходимыми что бы герой мог ходить по них.
один вопрос, не рассматривали делать игру в движке Unity3D? или вам именно на яве писать охото
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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