2013-03-05 3 views
1

Я пытаюсь случайным образом выбрать оператор со значениями внутри них, который извлекается из определенной точки на листе спрайта. Это текущий код, который у меня есть.Javascript html5 оператор случайного переключения холста

this.asteroid = Math.floor(Math.random()*4); 
switch(this.asteroid) 
    { 
    case 1: 
     this.srcX = 0; 
     this.srcY = 528; 
     this.width = 32; 
     this.height = 33; 
     break; 
    case 2: 
     this.srcX = 32; 
     this.srcY = 528; 
     this.width = 32; 
     this.height = 33; 
     break; 
    case 3: 
     this.srcX = 64; 
     this.srcY = 528; 
     this.width = 32; 
     this.height = 33; 
     break; 
    case 4: 
     this.srcX = 0; 
     this.srcY = 565; 
     this.width = 62; 
     this.height = 60; 
     break; 
    } 

Затем я потом рисую значения, которые он выбирает.

Проблема: у меня есть только рисование фиолетовых/серых астероидов, которые в настоящее время имеют размер 2 и 3. Я установил шрифт на главном экране, рассказывающий мне, какой случай он рисует первым, и обновился, пока он не покажет 1 или 4 она по-прежнему привлекает 2 и 3.

+0

Одна проблема в том, что Math.floor (Math.random() * 4) будет генерировать число от 0-3. Если вы хотите, чтобы он генерировал числа из 1-4, добавьте +1 после * 4) – Keeleon

+0

'Math.floor (Math.random() * 4);' может вернуть 0,1,2,3, но не 4. Я могу Посмотрите, почему вы не видите случая, когда он возвращает 1. – tafa

ответ

0
this.asteroid = Math.floor(Math.random()*4); 

Должно быть this.asteroid = Math.floor(Math.random()*5)+1; // Таким образом, вы могли бы рассчитывать на case 4 и "прыгать" по case 0

Престола в консоли: http://jsbin.com/ulirom/3/

2

Как ваш код, он в настоящее время генерирует числа 0, 1, 2 и 3. Таким образом, вы должны видеть case 1:, появляясь несколько раз, но никогда не case 4:. Чтобы исправить это, просто отрегулируйте свои случаи.

Лично я бы переписать этот код следующим образом:

var srcX = [0,32,64,0], 
    srcY = [528,528,32,565], 
    width = [32,32,32,62], 
    height = [33,33,33,60], 
    rand = Math.floor(Math.random()*4); 
this.srcX = srcX[rand]; 
this.srcY = srcY[rand]; 
this.width = width[rand]; 
this.height = height[rand]; 
+0

Проблема в том, что он будет случайным x и y, когда некоторые значения принадлежат друг другу – Nick

Смежные вопросы