728x90
반응형
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Bami`s 로또 추첨기</title>
<style>
body {
font-family: Arial, sans-serif;
}
.container {
margin-top: 20px;
text-align: center;
}
.numbers {
margin-top: 20px;
font-size: 24px;
}
.result, .status {
margin-top: 20px;
font-size: 20px;
}
.result {
color: green;
}
.warning {
margin-top: 20px;
font-size: 20px;
color: red;
}
</style>
</head>
<body>
<div class="container">
<h1>Bami`s 로또 추첨기</h1>
<button id="startButton" onclick="startLottery()">추첨 시작</button>
<button id="stopButton" onclick="stopLottery()" style="display: none;">추첨 정지</button>
<div class="numbers" id="numbers">로또 번호: </div>
<div class="result" id="result">
시도 횟수: 0회<br>
당첨 횟수:<br>
1등: 0회<br>
2등: 0회<br>
3등: 0회<br>
4등: 0회<br>
5등: 0회
</div>
<div class="status" id="status"></div>
<div class="warning" id="warning"></div>
</div>
<script>
let interval;
let moneySpent = 0;
let money = 0; // 시작 금액 0원
let lastWinningNumbers = [];
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function generateLottoNumbers() {
const numbers = new Set();
while (numbers.size < 6) {
numbers.add(getRandomNumber(1, 45));
}
let bonusNumber = getRandomNumber(1, 45);
while (numbers.has(bonusNumber)) {
bonusNumber = getRandomNumber(1, 45);
}
return {numbers: Array.from(numbers).sort((a, b) => a - b), bonus: bonusNumber};
}
function compareNumbers(userNumbers, lottoNumbers) {
return userNumbers.filter(num => lottoNumbers.includes(num)).length;
}
function startLottery() {
document.getElementById('startButton').style.display = 'none';
document.getElementById('stopButton').style.display = 'inline';
let attempts = 0;
let wins = [0, 0, 0, 0, 0]; // 0부터 4까지 등수별 당첨 횟수 (5등부터 1등)
const ticketPrice = 5000; // 로또 1번 가격 5천원
const prizeMoney = [5000, 100000, 1000000, 100000000, 2000000000]; // 당첨금: 5등 5천원, 4등 10만원, 3등 100만원, 2등 1억, 1등 20억
const maxAttempts = 100000; // 최대 시도 횟수 설정
let userNumbers;
let lottoResult;
const resultDiv = document.getElementById('result');
const numbersDiv = document.getElementById('numbers');
const statusDiv = document.getElementById('status');
const warningDiv = document.getElementById('warning');
resultDiv.innerHTML = `시도 횟수: 0회<br>당첨 횟수:<br>1등: 0회<br>2등: 0회<br>3등: 0회<br>4등: 0회<br>5등: 0회`;
numbersDiv.innerHTML = '로또 번호: ';
statusDiv.innerHTML = `시작 금액: ${money.toLocaleString()}원, 로또에 사용한 금액: ${moneySpent.toLocaleString()}원`;
warningDiv.innerHTML = '';
lastWinningNumbers = []; // 초기화
interval = setInterval(() => {
attempts++;
moneySpent += ticketPrice;
userNumbers = generateLottoNumbers().numbers;
lottoResult = generateLottoNumbers();
const matchingCount = compareNumbers(userNumbers, lottoResult.numbers);
const bonusMatch = userNumbers.includes(lottoResult.bonus);
numbersDiv.innerHTML = `사용자 번호: ${userNumbers.join(', ')}<br>로또 번호: ${lottoResult.numbers.join(', ')} + 보너스: ${lottoResult.bonus}<br>일치하는 숫자: ${matchingCount}개`;
let winIndex = -1;
if (matchingCount === 6) {
winIndex = 4; // 1등
} else if (matchingCount === 5 && bonusMatch) {
winIndex = 3; // 2등
} else if (matchingCount === 5) {
winIndex = 2; // 3등
} else if (matchingCount === 4) {
winIndex = 1; // 4등
} else if (matchingCount === 3) {
winIndex = 0; // 5등
}
if (winIndex >= 0) {
wins[winIndex]++;
money += prizeMoney[winIndex];
if (winIndex === 4) { // 1등일 때
lastWinningNumbers = lottoResult.numbers; // 1등 당첨 번호 저장
}
}
resultDiv.innerHTML = `시도 횟수: ${attempts}회<br>당첨 횟수:<br>1등: ${wins[4]}회<br>2등: ${wins[3]}회<br>3등: ${wins[2]}회<br>4등: ${wins[1]}회<br>5등: ${wins[0]}회<br>1등 당첨 번호: ${lastWinningNumbers.length ? lastWinningNumbers.join(', ') : ''}`;
statusDiv.innerHTML = `시도 횟수: ${attempts}회<br>내 돈: ${money.toLocaleString()}원, 로또에 사용한 금액: ${moneySpent.toLocaleString()}원`;
if (attempts >= maxAttempts) {
clearInterval(interval);
warningDiv.innerHTML = `최대 시도 횟수(${maxAttempts}회)를 초과하였습니다. 다시 시도해주세요.`;
document.getElementById('startButton').style.display = 'inline';
document.getElementById('stopButton').style.display = 'none';
}
}, 100); // 100ms 간격으로 추첨
}
function stopLottery() {
clearInterval(interval);
document.getElementById('startButton').style.display = 'inline';
document.getElementById('stopButton').style.display = 'none';
document.getElementById('warning').innerHTML = '추첨이 중지되었습니다.';
}
</script>
</body>
</html>
728x90
반응형
'프로그래밍(Web) > Javascript(TS,Node)' 카테고리의 다른 글
[바미] Node-Express 간단한 REST API 예제 (0) | 2024.08.01 |
---|---|
[바미] 심심해서 만들어 본 슬롯머신 (0) | 2024.06.07 |
ERROR : 'node_env'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다 (0) | 2023.10.11 |
페이징 예제 코드 (0) | 2023.05.24 |
[바미] React, Go(Gin) axios 통신 예제 코드. (0) | 2023.01.19 |