Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- application.properties
- 비즈니스레이어
- .xml
- jointpoint
- @RequestParam
- @
- PointCut
- SpringBoot
- 서비스레이어
- after-throwing
- 어노테이션
- MVC
- 스프링
- Java
- 의존주입
- frontController
- @RequestMapping
- @Valid
- 바인딩변수
- springmvc
- c:if
- @ResponseBody
- produces
- AOP
- 생성자주입
- spring
- springjdbc
- Model
- 유효성검사
- gradle
Archives
- Today
- Total
메모장
JavaScript 03 < JS 실습문제 > 본문
728x90
반응형
JS 실습문제
Q1.) 컴퓨터와 내가 주사위를 굴렸을때 랜덤으로 나오는 숫자가 더 큰쪽이 승리라고 출력해주기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS 최종 실습 예제</title>
============================================================
순서 2. 스타일 지정해주기
<style type="text/css">
#title { 게임시작 버튼을 꾸며 주기 위한 세팅
width: 450px; 넓이 450
height: 30px; 높이 30
margin: 5px; 테두리와 테두리 사이의 간격 5
background-color: lightgreen; 배경색
cursor: pointer; 여기에 커서를 올렸을때 마우스 포인터가 클릭 버튼처럼 바뀌도록
line-height: 30px; 글 안의 폭
text-align: center; 텍스트 가운데 정렬
}
#content { 컴퓨터와 나 (id는 # ,class는 . 으로 표시)
width: 450px; 넓이 450
height: 200px; 높이 200
margin: 5px; 테두리와 테두리 사이 간격
background-color: lightblue; 배경색
}
span, img { 이미지와 컴퓨터와 나 사이의 <span>태그의 간격
margin: 5px;
}
</style>
============================================================
</head>
<body>
============================================================
순서 1. 먼저 틀을 만들어 준다. 게임을 진행할 때 게임시작을 눌러야 하므로 게임시작 네모박스
컨텐츠 게임 내용이 들어갈 "content" 안에 컴퓨터와 내가 경기를 해야되니까 둘이 들어간다.
<div>,<span> 태그 모두 의미가 필요없을때 사용하는데 <div>태그는 블록 레벨 엘리멘탈이라서 한줄을
다 차지하는데 <span>태그는 인라인 엘리멘탈 이라서 자기 자신의 값 공간의 크기만큼만 차지한다.
나란히 놓을 예정 이므로 <span> 태그를 사용하여 컴퓨터와 나의 게임을 만들어 준다.
<div id="title">게 임 시 작</div>
<div id="content">
<span>COM</span>
<img id="com" alt="COM 이미지" src="images/dice01.png">
<span>ME</span>
<img id="me" alt="ME 이미지" src="images/dice01.png">
</div>
============================================================
순서 3. 자바스크립트
<script type="text/javascript">
document.querySelector('#title').onclick = function(){ title의 박스를 클릭 딱 눌렀을때
if(this.firstChild.nodeValue == '게 임 시 작'){ -- 그 값이 게임시작 이라고 되어있다면
'#title'의 첫번째 자식의 자식노드값을 선택 '#title'에는 하나의 값 밖에 없으므로
첫번째 자식의 자식노드 값이라지만 값이 하나라서 상관이 없다.
this.firstChild.nodeValue = '결 과 확 인'; -- 클릭했으면 결과 확인이라고 바꿔줘
this.style.backgroundColor = 'green'; 배경도 green으로 바꿔줘
this.style.color = 'white'; 글씨는 white
play(); -- 그리고 play()라는 함수 실행시켜줘 / 게임을 실행하는 함수 !
}
else{ -- 결과 확인으로 바뀌어 있다면
this.firstChild.nodeValue = '게 임 시 작'; 다시 게임시작으로 바꿔줘
this.style.backgroundColor = 'lightgreen'; 다시 배경색
this.style.color = 'black'; 다시 글씨
stop(); -- 그리고 stop()이라는 함수 실행시켜줘 / 게임을 마치는 함수 !
}
};
============================================================
순서 4. 함수 기능 만들기
function play(){ 게임을 실행하는 함수
document.querySelector('#com').src='images/dice.gif'; 'com'라는 이름의 이미지엔 이 gif가
document.querySelector('#me').src='images/dice.gif'; 'me'라는 이름의 이미지에도 이 gif가
} title 버튼을 딱 누르면 실행되는것
function stop(){ 게임을 종료하려고 할때
var comNum=Math.floor(Math.random()*6)+1; 컴퓨터의 랜덤 숫자
var meNum=Math.floor(Math.random()*6)+1; 나의 랜덤 숫자
document.querySelector('#com').src='images/dice0'+comNum+'.png';
'com'이라는 이름의 이미지엔 'images/dice0'랜덤숫자'.png' 랜덤숫자 1~6까지 존재
document.querySelector('#me').src='images/dice0'+meNum+'.png';
'me'이라는 이름의 이미지엔 'images/dice0'랜덤숫자'.png' 랜덤숫자 1~6까지 존재
예시 ) 'images/dice01.png'
자바의 쓰레드 같은 기능을 하는 setTimeout ( 함수(), 느리게 할 시간(1000 = 1초) );
setTimeout(function(){
if(comNum < meNum){ 내 숫자가 더 크다면
alert('승리!'); 승리
}
else if(comNum == meNum){ 동률이라면
alert('무승부'); 무승부
}
else{ 둘 다 아니라면
alert('패배...'); 패배
}
},1000); 1초 뒤에
}
</script>
</body>
</html>
Q2.) 컴퓨터와 내가 가위바위보 내기를 한다 . 똑같이 승부를 판결 해준다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>가위바위보 실습</title>
============================================================
순서 2. 스타일 지정해주기
<style>
#title{
width: 450px;
height: 50px;
margin: 5px;
background-color: lightblue;
cursor: pointer;
line-height: 50px;
text-align: center;
}
#content{
width: 450px;
height: 200px;
margin: 5px;
background-color: lightgreen;
text-align: center;
}
span, img{
margin: 5px;
text-align: center;
}
</style>
============================================================
</head>
<body>
============================================================
순서 1. 틀 먼저 잡아주기
<div id="title">게 임 시 작</div>
<div id="content">
<span>COM</span>
<img id="com" alt="COM 이미지" src="images/scissors.png">
<span>ME</span>
<img id="me" alt="ME 이미지" src="images/scissors.png">
</div>
============================================================
3. 자바스크립트 실행 시켜주기
<script type="text/javascript">
document.querySelector('#title').onclick = function(){
if(this.firstChild.nodeValue == '게 임 시 작'){
this.firstChild.nodeValue = '결 과 확 인';
this.style.backgroundColor = 'pink';
this.style.color = 'white';
play();
}else{
this.firstChild.nodeValue = '게 임 시 작';
this.style.backgroundColor = 'lightblue';
this.style.color = 'black';
stop();
}
};
============================================================
순서 4. 함수 실행
배열을 만들었다.
var images = ["rock","scissors","paper"];
function play(){
document.querySelector('#com').src='images/가위바위보.gif';
document.querySelector('#me').src='images/가위바위보.gif';
}
function stop(){
var comNum = Math.floor(Math.random()*3); //배열이 0~2 까지 시작하므로 아까 (랜덤*2)+1 실수 하지 말 것
var meNum = Math.floor(Math.random()*3); // 배열이 0~2 까지 시작하므로 아까 (랜덤*2)+1 실수 하지 말 것
document.querySelector('#com').src='images/'+images[comNum]+'.png'; // 혹시 나중에 배열글씨를 쓸일이 있을지 모르므로 png빼기 // 배열에 이미 .png가 존재하므로 뒤에 .png를 또 붙이지 말 것
document.querySelector('#me').src='images/'+images[meNum]+'.png'; // 혹시 나중에 배열글씨를 쓸일이 있을지 모르므로 png빼기 // 배열에 이미 .png가 존재하므로 뒤에 .png를 또 붙이지 말 것
setTimeout(function(){
if(images[comNum]<images[meNum]){ //크다 작다 부등호로 하면 잘못된 값 출력 될 수 있음// (comNum+2)%3 == meNum --> 실무에서 많이 쓰는 코드
alert('승리!'); // 0번이 주먹이고 2번이 가위라 주먹과 가위 인데 내가 이겼다고 나온다 ,,,
}else if(images[comNum]==0 && images[meNum]==2){
alert('패배...');
}
else if(images[comNum] == images[meNum]){
alert('무승부');
}else{
alert('패배...');
}
},1000);
}
</script>
</body>
</html>


내가 이기고도 패배가 출력되고 내가 졌는데 승리가 출력되는 오류 발생으로
하나하나 조건을 달아야 하나 했으나 공식 같이 많이 쓰이는 코드가 있어서 알게 되었다.
setTimeout(function(){
if((comNum+2)%3 == meNum){ 컴퓨터 랜덤숫자에 +2를 한 후 %3을 했을 때 내 숫자와 같으면
alert('승리!');
}
else if(comNum == meNum){
alert('무승부');
}
else{
alert('패배...');
}
},1000);
728x90
반응형
'JavaScript > 개념정리' 카테고리의 다른 글
| SweetAlert 꾸미기 (0) | 2024.04.24 |
|---|---|
| JavaScript 05 < ajax() 메서드 > (0) | 2024.04.23 |
| JavaScript 04 <jQuery> (0) | 2024.04.23 |
| JavaScript 02 < 입력 이벤트 > (0) | 2024.04.22 |
| JavaScript 01 < 스크립트 기초 > (0) | 2024.04.22 |