티스토리 뷰
전 글에서 트롤러 계산기라는 프로그램을 친구들에게 간단하게 보여줬더니 친구 한놈이 아이디어를 냈다.
우리팀 혹은 상대팀에 부캐가 있을 확률과 대리기사가 있을 확률까지 계산해서 승률을 알아보라는 것이다.
오 ~ 재밌겠는데 ~ 하고 해보았다. 미흡하고 조잡하지만 그냥 흥미롭게 봐주면 좋겠다 ... !!
프로그램 설명 :
롤 유저 10명 중
정상인 6명
트롤러 2명
부캐 1명
대리 1명
이란 가정 하에 돌렸고
블루팀 원딜자리에는 내가 들어감. (* 나는 실제로 롤에서 원딜러이다)
난 당연히 정상인으로 고정되서 계산됨.
트롤러 + 5, 정상인 + 15점 , 부캐 + 20점 , 대리 + 30점해서
블루팀 레드팀 총합이 더 큰 쪽이 이기게 판정
동점이면 게임 내용까진 알수없으니 어쩔수없이 draw
세밀한 확률을 얻기위해 1000판을 시뮬을 돌림.
(판수 더 늘릴수도있음)
여기서 draw한 판을 배제하고 승률 계산
결과 출력
<코드공개>
package NewProject;
import java.util.Random;
class MakeTeam{
Random r = new Random();
int[] array = new int[5];
String team;
MakeTeam(String team){
this.team = team;
for(int i=0;i<array.length;i++) {
array[i] = r.nextInt(10); //0~9까지의 임의 숫자 넣기
}
}
}
class CheckTroll{
String[] trollchk = new String[5];
int jumsu;
CheckTroll(MakeTeam mt) {
mt = new MakeTeam(mt.team); //팀을 생성했을시에 작성한 팀이름을 가져옴.
for(int i=0;i<mt.array.length;i++) {
if(mt.array[i] == 0 || mt.array[i] == 1) { //숫자 0을 트롤러로 간주 , 즉 트롤은 1/10 확률로 들어온다.
trollchk[i] = "트롤러";
jumsu += 5;
}else if(mt.array[i] >=2 && mt.array[i] <= 7){
trollchk[i] = "정상유저";
jumsu += 15;
}else if(mt.array[i] == 8) {
trollchk[i] = "부캐유저";
jumsu += 20;
}else if(mt.array[i] == 9) {
trollchk[i] = "대리기사";
jumsu += 30;
}
}
}
public void print() {
String[] position = {"탑","정글","미드","원딜","서폿"};
for(int i=0;i<trollchk.length;i++) {
System.out.println(position[i] + " : " + trollchk[i]);
}
}
}
public class Lol {
public static void main(String[] args) {
int win = 0;
int lose = 0;
int draw = 0;
int i=0;
while(i<1000) {
MakeTeam red = new MakeTeam("레드팀:상대팀"); //레드팀 생성완료
MakeTeam blue = new MakeTeam("블루팀:우리팀"); //블루팀 생성완료
blue.array[3] = 7; //사재원 들어감
CheckTroll chkred = new CheckTroll(red); //레드팀 트롤러 유저 확인
CheckTroll chkblue = new CheckTroll(blue); //블루팀 트롤러 유저 확인
chkblue.trollchk[3] = "사재원";
System.out.println();
System.out.println("큐가 잡혔습니다.");
System.out.println("-----" + red.team + " 팀원----- ");
chkred.print();
System.out.println("-----" + blue.team + " 팀원----- ");
chkblue.print();
if(chkred.jumsu > chkblue.jumsu) {
System.out.println("당신팀이 졌습니다.");
lose += 1;
}else if(chkred.jumsu < chkblue.jumsu) {
System.out.println("당신팀이 이겼습니다.");
win += 1;
}else if(chkred.jumsu == chkblue.jumsu) {
System.out.println("비겼습니다.");
draw += 1;
}
System.out.println();
i ++;
}
System.out.println("-----1000판 경기 결과-----");
System.out.println("이긴 횟수 : " + win);
System.out.println("진 횟수 : " + lose);
System.out.println("비긴 횟수 : " + draw);
System.out.println("----------------------");
double hap = win + lose; //전체 횟수
double sss = (win/hap) * 100;
System.out.println("사재원 승률 : " + sss + "%");
}
}
출력창까지 !
내가 직접 생각한 또 궁금하기도 한 것을 이렇게 스스로 코드로 입력하여 해보니 코딩을 배우길 정말 잘했다는 생각이 드는 하루다. 내가 머릿속에 떠올리는걸 구현할수있다는 것은 정말 신이 주신 선물과도 같다.
더욱 더 정진하여 실력을 키워야겠다. 코딩은 역시 파고팔수록 정말 재밌고 정말 힘들다 ㅎㅎ
또 느낀점 하나는 롤에서 팀탓을 하지말자 이거다 ㅋㅋㅋㅋ 비록 조잡한 프로그램이지만 몇번이나 돌려봤지만 대충 47~51%의 승률이 나오더라 결국에는 가장 큰 변수는 내 실력이다. 내가 현지인 이상 수준으로 잘하면 티어를 충분히 올릴수있다. 이 프로그램으로 인해 브 = 실 = 골 = 플 = 다 라는 이론은 완벽히 깨진것이 아닌가...? ㅎㅎ
감사합니다.
'프로그래밍 언어 복습 > JAVA' 카테고리의 다른 글
#43 JAVA 랜덤 동물 만들기 게임 문제 (0) | 2022.05.27 |
---|---|
#42 JAVA 원숭이 5마리 물건 돌리기 클래스화 문제 (0) | 2022.05.27 |
#40 JAVA 100m 올림픽 : 달리기 경주 게임 (0) | 2022.05.26 |
#39 JAVA *내 아이디어인 롤(LOL) 트롤러 문제* (0) | 2022.05.26 |
#38 JAVA 가위바위보 게임 클래스화 (0) | 2022.05.26 |