個人小專案:現有12個小球和一個天平,小球中有一個重量與其它的不同,稱重幾次能將這個小球找出來
阿新 • • 發佈:2019-02-07
<script language="JavaScript"> //建立兩個陣列,分別存放左邊盤小球物件和右邊盤小球物件 var leftbar = new Array(); var rightbar = new Array(); //建立一個整形變數,存放當前稱重的次數 var time = 1; //建立一個隨機數方法,用於獲取隨機數 function random(min,max){ return Math.floor(min + Math.random() * (max - min)); } //獲取兩個隨機數,一個隨機數用於隨機出小球中質量不同的那個小球,第二個隨機數用於獲取比普通小球輕還是重 var rand = random(0,11); var weightH = random(0,20); //如果weightH==10(即和普通小球重量相同)則重新隨機 while (weightH==10){ weightH = random(0,20); } $(function(){ //將獲取的重量不同的小球的編號和它的重量,新增到指定小球 $("#center").children(".ball").filter(":eq("+rand+")").attr("weight",weightH+""); //向天平左側稱重盤新增小球按鈕 $('#bu1').click(function(){ alert("請點選要放到天平左邊的小球"); //取消點選事件繫結,如果不取消,會導致使用者點選了左側按鈕和右側按鈕後再點選小球,會分別執行兩個方法 $(".ball").unbind("click"); //重新繫結小球點選事件 $(".ball").click(function(){ //JQuery中的不定長陣列很好用,需要往陣列中新增資料並賦值時,直接賦值下標為其長度的陣列物件即可 //獲取陣列當前長度 l = leftbar.length; //檢查是否超出個數 if (l>=6) { alert("天平每個盤裡不能超過6個!!!") } else{ $(this).hide(500);//對當前點選到的物件進行操作 leftbar[l]=$(this);//將物件傳入陣列 //清空稱重盤中的小球 $("div").remove("#leftpan .ballInBox"); //對陣列進行遍歷,並往稱重盤中新增小球 for (i=0;i<leftbar.length;i++) { $("#leftpan").append("<div weight='"+leftbar[i].attr("weight")+"' class='ballInBox fl' item='"+leftbar[i].attr('item')+"'><span class='num'>"+leftbar[i].attr('item')+"</span></div>"); } } }) }) //向天平左側稱重盤新增小球按鈕,和左側新增基本相同 $('#bu2').click(function(){ alert("請點選要放到天平右邊的小球"); $(".ball").unbind("click"); $(".ball").click(function(){ r = rightbar.length; if (r==6) { alert("天平裡每個盤裡不能超過6個!!!") } else{ $(this).hide(500); rightbar[r]=$(this); $("div").remove("#rightpan .ballInBox"); for (i=0;i<rightbar.length;i++) { $("#rightpan").append("<div weight='"+rightbar[i].attr("weight")+"' class='ballInBox fl' item='"+rightbar[i].attr('item')+"'><span class='num'>"+rightbar[i].attr('item')+"</span></div>"); } } }) }) //稱重按鈕 $("#bu3").click(function(){ //定義三個變數:左邊稱重盤重量,右邊稱重盤重量,稱重結果 var leftWeight = 0; var rightWeight = 0; var result = ""; //對兩個稱重盤中小球的陣列進行遍歷,計算出左邊和右邊的總重量 for (i=0;i<leftbar.length;i++) { leftWeight = leftWeight+parseInt(leftbar[i].attr("weight")); } for (j=0;j<rightbar.length;j++) { rightWeight = rightWeight+parseInt(rightbar[j].attr("weight")); } //進行判斷,並且對結果變數賦值 if (leftWeight>rightWeight) { alert("左邊重"); result = "左邊重"; } else if(leftWeight<rightWeight){ alert("右邊重"); result = "右邊重" }else{ alert("兩邊一樣重"); result = "兩邊一樣重啦" } //接下來在結果塊中建立結果 //將左邊和右邊小球的item屬性取出來,分別放到一個數組當中 var arrL = new Array(); var arrR = new Array(); for (a = 0;a<leftbar.length;a++) { arrL[arrL.length] = leftbar[a].attr("item"); } for (a = 0;a<rightbar.length;a++) { arrR[arrR.length] = rightbar[a].attr("item"); } //結果集包含:當前稱重次數,左邊所有小球的編號,右邊所有小球的編號,稱重結果 $(".results").append("<div class='result'><div class='time fl'>"+"當前次數:"+time+"</div><div class='leftlist fl'>左邊小球:"+arrL+"</div><div class='rightlist fl'>右邊小球:"+arrR+"</div><div class='weightResult fl'>"+result+"</div></div>"); //稱重次數+1 time++; }) //重置按鈕 $("#bu4").click(function(){ $(".ball").unbind("click"); //重置需要首先清空陣列 leftbar.length = 0; rightbar . length = 0; //然後清空兩邊盤子中的球 $("div").remove("#leftpan .ballInBox"); $("div").remove("#rightpan .ballInBox"); //然後對所有小球進行遍歷isVisible,如果不是,則將其顯示出來 var children = new Array(); children = $("#center").children(".ball").filter(":hidden"); //獲取到沒有顯示的元素後,將其顯示出來 children.show(500); }) //確認按鈕 $("#bu5").click(function(){ //只要輸入的數值和rand+1相同,則猜對,否則就猜錯 //獲取input框中使用者填入的值 var guess = $("input").val(); if (rand+1 == parseInt(guess)) { alert("恭喜答對"); } else{ alert("是不是這個你心裡沒點B數嗎?"); } }) }) </script>