1. 程式人生 > >個人小專案:現有12個小球和一個天平,小球中有一個重量與其它的不同,稱重幾次能將這個小球找出來

個人小專案:現有12個小球和一個天平,小球中有一個重量與其它的不同,稱重幾次能將這個小球找出來

		<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>
完工! XD