ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] 004. 자바스크립트 활용 실습(3)
    SsY/Class 2023. 5. 11. 18:00
    728x90
    자바스크립트 활용 실습
    • Test026
      - Math.random() : 난수 발생
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test026.html</title>
    
    <style type="text/css">
    	* {color: #288a50; font-weight:bold; font-family: 나눔고딕코딩; center; margin-left:auto; margin-right:auto;}
    	input {font-family: 나눔고딕코딩; font-weight: bold;}
    	input:focus {background-color: #288a50;  color:white;}
    	.btn {width: 120px; height:35px; font-weight: bold; font-family: 나눔고딕코딩; background-color: #288a50; color: white; border:#288a50;}
    	.btn:hover {color:lime;}
    	
    </style>
    
    <script type="text/javascript">
    	function startGame()
    	{
    		// 확인
    		//alert("게임 시작~");
    		
    		var strArr = ["가위","바위","보"];
    		
    		// ※ 『Math.random()』
    		//		0.0 ~ 1.0 사이의 실수 형태의 난수 발생
    		
    		// 확인
    		//alert(Math.random());
    		//--==>> 0.7975120153766102
    		//--==>> 0.08198100012261311
    		
    		// 현재 필요한 1~3의 정수 형태의 난수
    		var c = parseInt(Math.random() * 3)+1;		//-- 1 2 3 중 1개 난수 발생
    		//alert(c);
    		//--==>> 1~3 사이의 정수 형태의 난수 발생 확인
    		
    		var u = parseInt(document.getElementById("txtUser").value);
    		
    		var msg = "";
    		msg += "사용자 : " + strArr[u-1] + ", 컴퓨터 : " + strArr[c-1];
    		
    		//확인 
    		//alert(msg);
    		
    		//if ((u==1&&c==1)||(u==2&&c==2)||(u==3&&c==3))
    		if (u==c)
    			msg +=  " → 비겼습니다.";
    		// else if (u%3 == (c+2)%3)	//컴퓨터가 이기는 경우
    		else if ((u==1&&c==2)||(u==2&&c==3)||(u==3&&c==1))	//컴퓨터가 이기는 경우
    			msg +=  " → 컴퓨터가 이겼습니다.";
    		else 
    			msg += " → 사용자가 이겼습니다.";
    		
    		document.getElementById("txtResult").value = msg;
    
    	}
    
    
    </script>
    
    </head>
    <body>
    <div>
    	<h1>자바스크립트 활용</h1>
    	<hr>
    </div>
    
    	<!-- w3schools.com / koxo.com  두 사이트 참조하여 난수발생하는 함수 찾기-->
    <!-- 
    	가위 바위 보 게임을 구현한다.
    	html, css, javascript 를 활용한다.
    	또한, 자바스크립트 난수 발생 함수를 찾아 활용한다.
    	
    	페이지 레이아웃
    	---------------------------------------------------------
    	
    	입력(1.가위, 2.바위, 3.보)        [     ]<게임 결과 확인>
    	
    	[ 사용자 : 바위 컴퓨터: 보 → 컴퓨터가 이겼습니다.]
    	
    	---------------------------------------------------------
     -->
     
     <div>
     	<from>
     		<div>
    	 		입력 (1.가위 / 2. 바위 / 3. 보) &nbsp&nbsp&nbsp 
    	 		<input type="text" class="txt" id="txtUser" style="width: 30px"> 
    	 		<input type="button" class="btn" value="게임 결과 확인" onclick="startGame()">
     		</div>
     		
     		<div>
     			<input type="text" class="txt" id="txtResult" readonly="readonly" style="width: 600px; border: white;">
     		</div>	
     		 
     	</from>
     </div>
     
    </body>
    </html>

    • Test026_1
    더보기
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test026_1.html</title>
    
    <style type="text/css">
    	* {color: #288a50; font-weight:bold; font-family: 나눔고딕코딩; margin-left:auto; margin-right:auto; text-align: center;}
    	input {font-family: 나눔고딕코딩; font-weight: bold;}
    	input:focus {background-color: #288a50;  color:white;}
    	.btn {width: 120px; height:35px; font-weight: bold; font-family: 나눔고딕코딩; background-color: #288a50; color: white; border:#288a50;}
    	.btn:hover {background-color: white; color: #288a50;}
    	
    </style>
    
    <script type="text/javascript">
    	function rdGame()
    	{
    		var com = Math.floor(Math.random() * 3) + 1;	// 컴퓨터 난수 발생 1~3
    		
    		var userStr = document.getElementById("userNum").value;
    		var user = Number(userStr);
    		
    		if (user>3 || user<1)
    		{
    			alert("올바른 숫자를 입력하세요 (1~3)");
    			return;
    		}
    		
    		var res ="";
    		if ((user==1&&com==3)||(user==2&&com==1)||(user==3&&com==2)) // 유저가 이기는 경우
    			res = "사용자가 이겼습니다."
    		else if ((user==1&&com==2)||(user==2&&com==3)||(user==3&&com==1))	//컴퓨터가 이기는 경우
    			res = "컴퓨터가 이겼습니다."
    		else
    			res = "비겼습니다."
    		
    		// 결과 안내
    		var ans = "";
    		document.getElementById("resBox").value = "사용자 : "+ rcp(user)+ "  컴퓨터 : " + rcp(com) + " → " + res;
    		
    	}
    	function rcp(val)
    	{
    		switch (val)
    		{
    			case 1: val="가위";	break;	
    			case 2: val="바위";	break;	
    			case 3: val="보";	break;	
    		}
    		return val;
    	}
    </script>
    
    </head>
    <body>
    <div>
    	<h1>자바스크립트 활용</h1>
    	<hr>
    </div>
    
    	<!-- w3schools.com / koxo.com  두 사이트 참조하여 난수발생하는 함수 찾기-->
    <!-- 
    	가위 바위 보 게임을 구현한다.
    	html, css, javascript 를 활용한다.
    	또한, 자바스크립트 난수 발생 함수를 찾아 활용한다.
    	
    	페이지 레이아웃
    	---------------------------------------------------------
    	
    	입력(1.가위, 2.바위, 3.보)        [     ]<게임 결과 확인>
    	
    	[ 사용자 : 바위 컴퓨터: 보 → 컴퓨터가 이겼습니다.]
    	
    	---------------------------------------------------------
     -->
     
     <div>
     	<from>
     		<div>
    	 		입력 (1.가위 / 2. 바위 / 3. 보) &nbsp&nbsp&nbsp 
    	 		<input type="text" class="txt" id="userNum" style="width: 30px"> 
    	 		<input type="button" class="btn" value="게임 결과 확인" onclick="rdGame()" style="">
     		</div>
     		
     		<div>
     			<input type="text" class="txt" id="resBox" readonly="readonly" style="width: 600px; height: 30px; border: white;">
     		</div>	
     		 
     	</from>
     </div>
     
    </body>
    </html>

    • Test027
      - 로또 번호 자동 자판기
      - .sort(function(a, b){return a - b}) : 오름차순 정렬
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test027.html</title>
    
    <script type="text/javascript">
    	function createLotto()
    	{
    		//alert("로또~");
    		document.getElementById("resultArea").value = "";
    		
    		var count = parseInt(document.getElementById("txtCount").value);
    		
    		for (var i = 0; i < count; i++)
    		{
    			// 로또 1게임 실행 → 함수 호출
    			//runLottoSingle();
    			
    			document.getElementById("resultArea").value += runLottoSingle() + "\n"; 
    		}
    	}
    	// 로또 1게임 실행
    	function runLottoSingle()
    	{
    		// 방 6개로 구성된 배열 생성
    		var lottoArray = new Array(6);
    		
    		// 공 45개로 구성된 배열 생성
    		var arr = new Array(45);
    		
    		// 1 ~ 45 까지의 로또 번호를 공에 새겨넣기
    		for (var i = 0; i <= arr.length; i++)
    			arr[i-1] = i;
    		
    		// 확인
    		//alert(arr[9]);	//--==>> 10
    		//alert(arr[40]);	//--==>> 41
    		
    		// 공 뒤섞기
    		for (var i = 0; i < arr.length; i++)	//0~44 -- 사실 몇 번 돌리던 상관은 없음
    		{
    			var j = parseInt(Math.random()*45);	// 0~44 까지의 정수 형태의 난수 발생
    			var temp = arr[i];		//┐
    			arr[i] = arr[j];		//├ 자리 바꾸기 ~ 
    			arr[j] = temp;			//┘
    		}
    		// 확인
    		// return arr;
    		
    		// 배열의 요소 옮겨 담기
    		for (var i = 0; i < lottoArray.length; i++)
    			lottoArray[i] = arr[i];
    
    		// 확인
    		// return lottoArray;
    		
    		// 정렬 수행 -- 크기비교해서 자리바꿈
    		lottoArray.sort(function(a,b){return a-b}); // 그냥 sort() 는 문자 비교 함수
    		            //  ------------------------- 기능 재정의 -> 함수 ((익명 함수!!!!))
    		            //  (function(left,right){ return Number(left)-Number(right)}) // left, right 는 변수선언 한 것 뿐
    		
    		// 구성된 배열(최종 결과값 반환)
    		return lottoArray;
    	
    	}
    </script>
    
    </head>
    <body>
    
    <div>
    	<h1>자바스크립트 활용</h1>
    	<hr>
    </div>
    <!-- 
    	로또 번호 (1~45)를 중복되지 않은 정수 6개의 형태로 생성하여
    	출력해주는 페이지를 구현한다.
    	html, css, javascript 를 활용한다.
    	또한, 난수 발생 함수를 활용한다.
    	그리고, 번호순(오름차순) 으로 정렬하여 출력할 수 있도록 한다.
    	
    	이 과정에서 사용자가 주문한 장 수만큼 출력할 수 있도록 처리한다.
    	
    	페이지 레이아웃
    	----------------------------------------------------
    	로또 [ 3 ] 장			<주문하기>
    	결과
    	---------------------- → textarea
    	1 2 5 6 12 22
    	6 13 25 35 40 41
    	2 3 9 11 30 41
    	----------------------	
    	----------------------------------------------------
     -->
    
    <div>
    	<form>
    		<div>
    		로또 <input type="text" class="txt" id="txtCount" style="width: 30px;"> 장
    		<button type="button" class="btn" onclick="createLotto()">주문하기</button>
    		</div>
    		<div>
    		결과
    		</div>
    		<div>
    		<textarea name="resultarea" id="resultArea" cols="20" rows="30" ></textarea>
    		</div>
    
    	</form>
    </div>
    
    </body>
    </html>

    • Test027_1
    더보기
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test027.html</title>
    
    <style type="text/css">
    	*{ text-align : center;	background-color: black; color: red; font-family:궁서; font-size:30px;}
    	div {height : 50px;}
    	textarea {border: red; font-size:70px;}
    </style>
    
    <script type="text/javascript">
    	
    	function lotto()
    	{
    		alert("※경고\n무엇을 상상하든 그 이상을 잃게 됩니다.")
    		document.getElementById("resultBox").value ="";
    		
    		var jumun = Number(document.getElementById("jumun").value);	// 몇 장 인지
    		for (var a = 0; a < jumun; a++)
    		{
    			var arr = [0,0,0,0,0,0];
    			
    			// 난수 발생 6개
    			for (var i = 0; i < 6; i++)
    			{
    				var num = parseInt(Math.random() * 45)+1;
    				arr[i] += num;
    				//alert(arr[i]);
    				if (i!=0)
    				{
    					for (var j= 0; j<i; j++)
    					{
    						if (arr[i]==arr[j])
    						{
    							i--;
    							continue;
    						}
    					}
    				}
    			}
    			// sort()
    			arr.sort(function(a, b){return a - b});
    			
    			/*
    			// 6개 크기 순서대로 정렬하기 -- 버블 버블~
    			for (var i = 0; i < (arr.length)-1; i++)
    			{
    				for (var j = i+1; j < arr.length; j++)
    				{
    					if (arr[i] > arr[j])
    					{
    						arr[i] = arr[i]^arr[j];
    						arr[j] = arr[j]^arr[i];
    						arr[i] = arr[i]^arr[j];
    					}
    				}
    			}	
    			//alert(arr);
    			*/
    			
    			// textarea에 추가하기
    			document.getElementById("resultBox").value += arr + "\n";
    		}		
    	}
    
    </script>
    
    </head>
    <body>
    
    <div style="height:100px;">
    	<h1>자바스크립트 활용</h1>
    	<hr>
    </div>
    <!-- 
    	로또 번호 (1~45)를 중복되지 않은 정수 6개의 형태로 생성하여
    	출력해주는 페이지를 구현한다.
    	html, css, javascript 를 활용한다.
    	또한, 난수 발생 함수를 활용한다.
    	그리고, 번호순(오름차순) 으로 정렬하여 출력할 수 있도록 한다.
    	
    	이 과정에서 사용자가 주문한 장 수만큼 출력할 수 있도록 처리한다.
    	
    	페이지 레이아웃
    	----------------------------------------------------
    	로또 [ 3 ] 장			<주문하기>
    	결과
    	---------------------- → textarea
    	1 2 5 6 12 22
    	6 13 25 35 40 41
    	2 3 9 11 30 41
    	----------------------	
    	----------------------------------------------------
     -->
    
    <div>
    	<form>
    		<div>
    		로또 <input type="text" class="txt" id="jumun" style="width: 20px;"> 장
    		<button type="button" class="btn" onclick="lotto()">주문하기</button>
    		</div>
    		<div style="height:590px"><img src="img/dobak.jpg"></div>
    		<div>
    		결과
    		</div>
    		<div>
    		<textarea name="resultarea" id="resultBox" cols="20" rows="30" ></textarea>
    		</div>
    
    	
    	</form>
    </div>
    
    </body>
    </html>

    • Test028
      - 라디오버튼 다루기
      - document.getElementsByName()
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test028.html</title>
    
    <script type="text/javascript">
    	function actionChoice()
    	{
    		//alert("액션 초이스~")
    		var radioObj = document.getElementsByName("radioGroup");	// ※ Element's' 에 주의
    
    		//확인
    		//alert(radioObj);			//--==>> [object NodeList] → 자바스크립트 배열
    		//alert(radioObj.length);	//--==>> 6 → 배열의 길이 확인
    		
    		var msg = "선택한 항목이 존재하지 않습니다.";	// 아무것도 고르지 않았을 때 출력
    		
    		for (var i = 0; i < radioObj.length; i++)	// 0 1 2 3 4 5
    		{
    			// 확인
    			//alert(radioObj[i].checked);
    			if (radioObj[i].checked)
    			{
    				//확인
    				//alert(i+"번째요소");	//-- 0~5
    				//alert(radioObj[i].value);	// 1~6 지정해둔 value 값 확인
    				
    				msg = "당신이 선택한 사이즈는 아이스크림의 종류를 " + radioObj[i].value + "개 고를 수 있습니다.";
    				break;	// 라디오버튼의 경우 중복 선택이 불가능하므로 -> 확인 후에 뒤에 남은 값은 확인할 필요가 없음
    			}
    		}
    		
    		alert(msg);
    		
    		
    	}
    </script>
    
    </head>
    <body>
    
    <div>
    	<h1>자바스크립트 활용</h1>
    	<hr>
    </div>
    
    <div>
    	<h2>라디오 버튼, 체크박스 다루기</h2>
    	
    	<form>
    		--- 사이즈 선택 --- <br><br>
    		
    		<input type="radio" id="a" name="radioGroup" value="1"><label for="a">싱글(1)</label> 
    		<input type="radio" id="b" name="radioGroup" value="2"><label for="b">더블(2)</label> 
    		<input type="radio" id="c" name="radioGroup" value="3"><label for="c">파인트(3)</label> 
    		<input type="radio" id="d" name="radioGroup" value="4"><label for="d">쿼터(4)</label> 
    		<input type="radio" id="e" name="radioGroup" value="5"><label for="e">패밀리(5)</label> 
    		<input type="radio" id="f" name="radioGroup" value="6"><label for="f">하프갤런(6)</label> 
    		<br><br>
    		
    		<button type="button" class="btn" onclick="actionChoice()">확인</button>
    	
    	</form>
    </div>
    
    </body>
    </html>

    • Test029
      - 체크박스 다루기
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test029.html</title>
    
    <script type="text/javascript">
    	function actionChoice()
    	{
    		//alert("ye~");
    		
    		var checkObj = document.getElementsByName("checkGroup");
    		var msg = "";
    		var flag = true;
    		
    		// 확인 
    		//alert(checkObj);			//--==>> [object NodeList] → 자바스크립트 배열
    		//alert(checkObj.length);	//--==>> 6
    		
    		for (var i = 0; i < checkObj.length; i++)
    		{
    			//확인
    			//alert(checkObj[i].checked);	//-- true / false 반환
    			
    			if (checkObj[i].checked)
    			{
    				msg += checkObj[i].value + " ";	
    				flag = false;
    			}
    		}
    		
    		if (flag)
    			msg = "선택한 과목이 없습니다."		
    		alert(msg);	
    		
    		
    		
    	}
    </script>
    </head>
    <body>
    
    <div>
    	<h1>자바스크립트 활용</h1>
    	<hr>
    </div>
    
    <div>
    	<h2>라디오 버튼, 체크박스 다루기</h2>
    	
    	<form>
    		--- 과목 선택 --- <br><br>
    		
    		<input type="checkbox" id="a" name="checkGroup" value="(7566)자바기초"><label for="a">Java Beginning</label> 
    		<input type="checkbox" id="b" name="checkGroup" value="(1123)오라클"><label for="b">Oracle</label> 
    		<input type="checkbox" id="c" name="checkGroup" value="(7567)자바심화"><label for="c">Java Advanced</label> 
    		<br>
    		<input type="checkbox" id="d" name="checkGroup" value="(8873)웹클라이언트"><label for="d">Web Client</label> 
    		<input type="checkbox" id="e" name="checkGroup" value="(8895)웹서버"><label for="e">Web Server</label> 
    		<input type="checkbox" id="f" name="checkGroup" value="(9901)프레임워크"><label for="f">Framework</label> 
    		<br><br>
    		
    		<button type="button" class="btn" onclick="actionChoice()">선택 완료</button>
    	
    	</form>
    </div>
    
    </body>
    </html>
    728x90
Designed by planet-si