Не надо делать огромные if-блоки. if блоки должны быть маленькие! 
	 | 
	
		
 Есть всего 8 состояний. Каждое состояние запускает свою функцию. Внутри условия только запуск функции. Функция с условиями запускает сама себя каждые n милисек. пока нажата любая из кнопок. 
	 | 
	
		
 Цитата: 
	
 как можно не видя кода ответить на это: Цитата: 
	
  | 
	
		
 document.onkeydown = function(e) { 
	if(e.keyCode==37) { tank.vector = "left"; if(tank.x>0) { tank.x-=4; } }  | 
	
		
 Вот код движения танка (персонажа). 
	 | 
	
		
 Какой же дожен быть алгоритм? 
	 | 
	
		
 Эээ.. А вы делаете без ООП? 
	 | 
	
		
 Поскольку в коде присутствуют объекты, то это 100% ооп 
	 | 
	
		
 А, да, мой косяк. 
	 | 
	
		
 
var keys = {
  up     : false,
  down   : false,
  left   : false,
  right  : false
};
function onkeydown(event){
    if(event.keyKode === 323){
        keys.up = true;
    } else if(event.keyKode === 32) {
        keys.down = true; 
    }
}
function onkeyup(event){
    if(event.keyKode === 323){
        keys.up = false;
    } else if(event.keyKode === 32) {
        keys.down = false; 
    }
}
в keys всегда хранится актуальное состояние нажатых клавиш. кэп  | 
| Часовой пояс GMT +3, время: 07:43. |