Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.03.2017, 18:13
Аспирант
Отправить личное сообщение для АнонимныйПарень Посмотреть профиль Найти все сообщения от АнонимныйПарень
 
Регистрация: 17.03.2017
Сообщений: 67

Подкоректируйте код (есть один баг)
Ребята, здравствуйте!
Нужна помощь! Я делаю игру, у меня есть персонаж, который может "прыгать" и ходить в лево/право. Когда координата "Y" у персонажа больше определенной цифры, персонаж уменьшает свой "Y", то-есть опускается. Баг состоит в том, что человек может нажать несколько раз на кнопку прыжка, я хотел бы что б до момента приземления персонажа, нельзя было нажать на кнопку прыжка. Помогите, пожалуйста, подредактировать код.

КОД:
jQuery( document ).ready(function() {

//Создаю canvas
	var canvas = document.getElementById('canvas');
	var context = canvas.getContext('2d');
	var width = 700;
	var height = 700;

//Добавляю стили для canvas
	canvas.width = width;
	canvas.height = height;
	canvas.style.border = "1px solid black";

//Константы и глобальные переменные 
	var x = 150;
	var y = 250;
	var dx = 3;
	var dy = 50;
	var x2 = 135;
	var y2 = 387;

//Создаю Боба
	var img = new Image();
	img.src = 'images/bob.png';

	var bobDraw = function () {
		context.drawImage(img, x, y, 66, 132);
		context.drawImage(img2, x2, y2, 100, 100);
	};

	var img2 = new Image();
	img2.src = 'images/grass.png';

	var grassDraw = function () {
		context.drawImage(img2, x2, y2, 100, 100);
	};

//Игровой цикл
	var z = setInterval(function () {

	context.clearRect(0, 0, width, height);

	// Управление Бобом
	window.onkeydown = function (e) {
		if(e.keyCode == 87) { //W
			//console.log(dy);
			y += -dy;
		}
		if(e.keyCode == 65) { //A
			x += -dx;
			//console.log(dx); Скорость
			img.src = 'images/bob2.png';
		}
		if(e.keyCode == 83) { //S
			console.log("S");
		}
		if(e.keyCode == 68) { //D
			x += dx;
			//console.log(dx); Скорость
			img.src = 'images/bob.png';
		}
	};

	if (y <= 250) {
		y += 5;
	};
	if (y <= 200) {
		y += 10;
	};
	if (y <= 120) {
		y += 15;
	};

	bobDraw();
	grassDraw();
	
	}, 200);
});


<!DOCTYPE html>
<html>
<head>
	<title>TEST</title>
	<link href="style.css" rel="stylesheet" type="text/css"/>
	<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
	<script type="text/javascript" src="script.js"></script>
</head>
<body>
		<canvas id="canvas"></canvas>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 31.03.2017, 17:09
Профессор
Отправить личное сообщение для Brook Посмотреть профиль Найти все сообщения от Brook
 
Регистрация: 13.04.2012
Сообщений: 210

Все очень просто просто пропишите проверку положения бюоба по высоте (кордината y), например кордината y когда боб стоит на земле равна 0, во время прыжка она больше значит пока эта кордината снова не будет равно 0, игнорировать прыжок, код будет выглядеть приблизительно так:

if(e.keyCode == 87 [B]&& y == 0[/B] ) { // where  0 is position of y when bob stand on the ground
//console.log(dy);
y += -dy;
}
Ответить с цитированием
  #3 (permalink)  
Старый 31.03.2017, 19:40
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от АнонимныйПарень Посмотреть сообщение
... jquery-3.1.1.min.js ... Создаю canvas ...
Для начала стоит выбрать правильный инструмент, какую-нибудь библиотеку для canvas, а не безполезную здесь jquery.
Сообщение от АнонимныйПарень Посмотреть сообщение
... Я делаю игру ...
Тогда эта библиотека должна быть еще и игровым движком, иначе ты просто погрязнешь на реализации типичных действий в игре на чистом js, а мир не скоро увидит твою крутую игру))
Ответить с цитированием
  #4 (permalink)  
Старый 01.04.2017, 13:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

АнонимныйПарень,
https://learn.javascript.ru/animation
Ответить с цитированием
  #5 (permalink)  
Старый 01.04.2017, 13:19
Аспирант
Отправить личное сообщение для АнонимныйПарень Посмотреть профиль Найти все сообщения от АнонимныйПарень
 
Регистрация: 17.03.2017
Сообщений: 67

Все картинки отрисовуются на канвасе, но когда я нажимаю кнопку вверх, ничего не происходит. Он не "прыгает" как раньше. Как эту проблему полечить?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь с доработкой JS, исправить 1 баг, можно даже за $ Kanzaki Элементы интерфейса 18 14.09.2011 21:21
перевод в число или как прибавить один anton_vek Общие вопросы Javascript 3 26.08.2010 13:07
Баг с jpeg в ie6 JsLoveR Элементы интерфейса 20 28.01.2010 20:57
У кого есть код этих задач? скиньте! а то до меня не доходит немного Kirulezzz Общие вопросы Javascript 7 03.12.2009 00:34
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37