首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单选号游戏(jQuery)

简单选号游戏(jQuery)
EN

Stack Overflow用户
提问于 2012-08-19 16:50:28
回答 2查看 546关注 0票数 2

首先,你好。伟大的论坛/网站:)

我已经在我的个人网站工作了一整个周末,现在我被困在这个“游戏”的想法,我想增加我的网站。我非常了解HTML和CSS,但我对JS/jQuery非常陌生。

让我试着从用户体验中解释一下他应该如何处理这个“游戏”。

这里有10号,用户从其中选择3个数字,以及从新数字列表(11-15)中选择2额外数字。这些选定的数字然后转到另一个div (或其他什么)。从现在开始,我可以使用PHP完成我的工作。但我完全被这个角色困住了。我知道,我知道这很简单,但是在我的站点上编码48小时必须冻结:D。

从这些数字中选择5个号码: 1-2-3-4-5-6-7-8-9-10从其中选择2个额外号码: 11-12-13-14-15

选择的数字应该在div中用jQuery显示如下:正常: 2-3-6-7-8额外: 12-14。

用户还可以清除选定的数字(如果他希望一起选择不同的数字)和/或删除一个数字并选择新的数字。当选择5/2 数字时,所有其他数字都应该禁用,这样用户就不能选择超过5/2的数字。

此外,如果用户可以随机选择数字(单击某个按钮并自动选择5+2数字),这将是很酷的。但我不知道该怎么做?

现在,数字选择可能可以这样做吗?

代码语言:javascript
复制
//5 numbers
$("#mainNumbers div").click(function) {
var selectedNumber = $(this).text().clone();
$("#selectedMainNumbers").append("<div>"+selectedNumber+"</div>");
}

//2 extra numbers
$("#extraNumbers div").click(function) {
var selectedNumber = $(this).text().clone();
$("#selectedExtraNumbers").append("<div>"+selectedNumber+"</div>");
}

可以这样选择吗?

代码语言:javascript
复制
$("#clearNumbers").click(function) {
    $("#selectedMainNumbers, #selectedExtraNumbers").empty();
    }

看上去还好吗?或者那些人还能做得更好。

而现在我不知道的是。如何进行数字排序?使用数组?例如,用户首先单击数字5,这将被添加到#selectedMainNumbers div中,然后他选择2并将其添加到#selectedMainNumbers div中,它现在看起来类似于8-3,但是我希望数字顺序总是,所以数字应该是3-8格式。

也该如何做随机数的挑选?如果用户已经选择了所需的5个号码,那么禁用号码选择如何呢?

哎呀,这是个长邮差。真对不起。希望你能给我一些提示..。因为我的大脑不工作,自动取款机:/ /谢谢。问一问是否有什么事情不清楚。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-19 23:11:17

http://jsbin.com/ihubip/3/

HTML:

代码语言:javascript
复制
  <div id="mainNumbers"></div> 
  <div id="extraNumbers"></div>
  <div id="selected_mainNumbers"></div> 
  <div id="selected_extraNumbers"></div>      
  <br />     <button id="generateNumbers">Generate random numbers</button>      
  <br />     <button id="clearNumbers">Clear selected</button>

CSS:

代码语言:javascript
复制
#mainNumbers, #extraNumbers{
  margin:5px;
  padding:16px;
  background:#345;
}
#mainNumbers div,
#extraNumbers div,
#selected_mainNumbers div,
#selected_extraNumbers div
{
 cursor:pointer;
 display:inline;
 background:#eee;
 padding:5px 10px;
 border-radius:10px;
 margin:3px;
}
#selected_mainNumbers, #selected_extraNumbers{
  margin-top:5px;
  padding:16px;
  height:20px;
  background:#789;
}
.selectedNum{
  opacity:0.5;
}
#selected_mainNumbers div,
#selected_extraNumbers div{
  opacity:1;
  background:gold;
}

jQuery:

代码语言:javascript
复制
// generate buttons with numbers
for(i=1;i<=15;i++){
  var appendWhile= i<=10 ?
  $('#mainNumbers').append('<div>'+ i +'</div>') :
  $('#extraNumbers').append('<div>'+ i +'</div>') ; 
}

// create arrays for selected numbers
var mainNumbers=[], extraNumbers=[];

// function print array ///
function printArray(name, arrName){
    $('#selected_'+name).empty();
    for(a=0;a<arrName.length;a++){
       $('#selected_'+name).append('<div>'+ arrName[a]+'</div>');
    }
}

// select function ////////
function selectNum(clickedElement, name, len){
  var arrName = window[name]; // convert string to var
  var num = parseInt( $(clickedElement).text(), 10 );  
  if( arrName.length < len && $.inArray(num,arrName) == -1  ) {
    arrName.push(num);
    arrName.sort(function(a,b){return a-b;}); // sort numerically
    printArray(name, arrName);
    $(clickedElement).addClass('selectedNum');
  }else{
    $(clickedElement).parent().fadeTo(0,0.3).fadeTo(400,1); // visually alert array is full
  }
}

// remove function ///////////
function removeFromArr(clickedElement,arrName){
  var num = parseInt( $(clickedElement).text(), 10 );
  for(i=0;i<arrName.length;i++){
    if(arrName[i]==num){
       arrName.splice(i,1);
       $(clickedElement).remove(); 
    }
  }
}
// clear function
function clearAll(){
    mainNumbers=[], extraNumbers=[]; // reset arrays
  $('#selected_mainNumbers, #selected_extraNumbers').empty(); // remove selected buttons
  $('.selectedNum').removeClass(); // reset 'selected' states
}

// clicks ////////////////////
$('#mainNumbers, #extraNumbers').on('click','div',function(){
   var len = $(this).parent().attr('id')=='mainNumbers' ? 5 : 2;
   selectNum( $(this), $(this).parent().attr('id'), len );
});

$('#selected_mainNumbers, #selected_extraNumbers').on('click','div',function(){
    var arrName = $(this).parent().attr('id').split('selected_')[1];
    $('#'+arrName).find('div:contains('+$(this).text()+')').removeClass('selectedNum');
    removeFromArr( $(this), window[arrName] );
});

// clear all /////////////////
$('#clearNumbers').click(function(){
   clearAll();
});

// generate random ///////////
$('#generateNumbers').click(function(){
  clearAll();
  
  for(r=0;r<5;r++){
     var n = Math.ceil(Math.random() * 10);
     while ($.inArray(n, mainNumbers) > -1){ // loop until no match found
         n = Math.ceil(Math.random() * 10);
     }  
     mainNumbers[r] = n;
     $('#mainNumbers div').eq(n-1).addClass('selectedNum');
  }
  
  for(rr=0;rr<2;rr++){
     var nn = Math.ceil(Math.random() * (15-10)+10);
     while ($.inArray(nn, extraNumbers) > -1){
         nn = Math.ceil(Math.random() * (15-10)+10);
     }  
     extraNumbers[rr] = nn;
     $('#extraNumbers div').eq(nn-10-1).addClass('selectedNum');
  }
  
   mainNumbers.sort(function(a,b){return a-b;}); // sort array
  extraNumbers.sort(function(a,b){return a-b;}); // sort array
  printArray( 'mainNumbers', mainNumbers );
  printArray('extraNumbers', extraNumbers);
  
});
票数 1
EN

Stack Overflow用户

发布于 2012-08-19 17:49:02

那这个呢:http://jsfiddle.net/ABetK/

如果您想将它发送到服务器,请使用一个表单:http://jsfiddle.net/ABetK/1/

编辑:

似乎我没有看完所有的问题,所以我的小提琴手并没有做user1610229想做的所有事情。

丹·巴兹莱完成了我的代码:http://jsfiddle.net/Crn45/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12028236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档