#include<iostream>
#include<time.h>
#include<random>
#include<functional>
using namespace std;
int main()
{
mt19937 engine((unsigned int)time(NULL));
uniform_int_distribution<int>distribution(0, 999);
auto generator = bind(distribution, engine);
int r; // 랜덤(생각해보면 괜히 만듬)
int count_1 = 100000; // 시물 횟수(시간)
int bp = 20; // 가속 버프 남은 시간
int cp = 1; // 위대한 성전사 버프 (응징의 방패 사용시 신성한 힘)
int hp = 0; // 신성한 힘
int a = 0; // 성전사의 일격 쿨타임
int b = 0; // 심판 쿨타임
int c = 0; // 응징의 방패 쿨타임
int a_rank[2]; // 성전사의 일격 우선순위 0 = 위대한 성전사 버프가 있을때, 1 = 없을때
int b_rank[2]; // 심판 우선순위 위와 동일
int c_rank[2]; // 응징의 방패 우선순위 위와 동일
for(int k = 0; k < 6; k++)
{
a_rank[0] = (k - k % 2)/2;
b_rank[0] = a_rank[0] - (1 + k % 2);
c_rank[0] = a_rank[0] + (1 + k % 2);
if(b_rank[0] == -1)
b_rank[0] = 2;
if(b_rank[0] == -2)
b_rank[0] = 1;
if(b_rank[0] == 3)
b_rank[0] = 0;
if(b_rank[0] == 4)
b_rank[0] = 1;
if(c_rank[0] == -1)
c_rank[0] = 2;
if(c_rank[0] == -2)
c_rank[0] = 1;
if(c_rank[0] == 3)
c_rank[0] = 0;
if(c_rank[0] == 4)
c_rank[0] = 1;
for(int p = 0; p < 6; p++)
{
a_rank[1] = (p - p % 2)/2;
b_rank[1] = a_rank[1] - (1 + p % 2);
c_rank[1] = a_rank[1] + (1 + p % 2);
if(b_rank[1] == -1)
b_rank[1] = 2;
if(b_rank[1] == -2)
b_rank[1] = 1;
if(b_rank[1] == 3)
b_rank[1] = 0;
if(b_rank[1] == 4)
b_rank[1] = 1;
if(c_rank[1] == -1)
c_rank[1] = 2;
if(c_rank[1] == -2)
c_rank[1] = 1;
if(c_rank[1] == 3)
c_rank[1] = 0;
if(c_rank[1] == 4)
c_rank[1] = 1;
a = 0;
b = 0;
c = 0;
bp = 20;
cp = 1;
hp = 0;
for(int t = 0; t < count_1; t++)
{
bp -= 1;
if(a != 0)
a -= 1;
if(b != 0)
b -= 1;
if(c != 0)
c -= 1;
if(bp <= 1 && b == 0)
{
hp += 1;
b = 4;
bp = 20;
continue;
}
if(cp == 1)
{
if(a == 0 && a_rank[0] == 0)
{
hp += 1;
r = generator();
if( r < 300)
{
c = 0;
cp = 1;
}
a = 3;
continue;
}
else if(b == 0 && b_rank[0] == 0)
{
hp += 1;
b = 4;
bp = 20;
continue;
}
else if(c == 0 && c_rank[0] == 0)
{
cp = 0;
c = 10;
hp += 1;
r = generator();
if( r < 500)
{
c = 0;
cp = 1;
}
continue;
}
else if(a == 0 && a_rank[0] == 1)
{
hp += 1;
r = generator();
if( r < 300)
{
c = 0;
cp = 1;
}
a = 3;
continue;
}
else if(b == 0 && b_rank[0] == 1)
{
hp += 1;
b = 4;
bp = 20;
continue;
}
else if(c == 0 && c_rank[0] == 1)
{
cp = 0;
c = 10;
hp += 1;
r = generator();
if( r < 500)
{
c = 0;
cp = 1;
}
continue;
}
else if(a == 0 && a_rank[0] == 2)
{
hp += 1;
r = generator();
if( r < 300)
{
c = 0;
cp = 1;
}
a = 3;
continue;
}
else if(b == 0 && b_rank[0] == 2)
{
hp += 1;
b = 4;
bp = 20;
continue;
}
else if(c == 0 && c_rank[0] == 2)
{
cp = 0;
c = 10;
hp += 1;
r = generator();
if( r < 500)
{
c = 0;
cp = 1;
}
continue;
}
}
if(cp == 0)
{
if(a == 0 && a_rank[1] == 0)
{
hp += 1;
r = generator();
if( r < 300)
{
c = 0;
cp = 1;
}
a = 3;
continue;
}
else if(b == 0 && b_rank[1] == 0)
{
hp += 1;
b = 4;
bp = 20;
continue;
}
else if(c == 0 && c_rank[1] == 0)
{
cp = 0;
c = 10;
r = generator();
if( r < 500)
{
c = 0;
cp = 1;
}
continue;
}
else if(a == 0 && a_rank[1] == 1)
{
hp += 1;
r = generator();
if( r < 300)
{
c = 0;
cp = 1;
}
a = 3;
continue;
}
else if(b == 0 && b_rank[1] == 1)
{
hp += 1;
b = 4;
bp = 20;
continue;
}
else if(c == 0 && c_rank[1] == 1)
{
cp = 0;
c = 10;
r = generator();
if( r < 500)
{
c = 0;
cp = 1;
}
continue;
}
else if(a == 0 && a_rank[1] == 2)
{
hp += 1;
r = generator();
if( r < 300)
{
c = 0;
cp = 1;
}
a = 3;
continue;
}
else if(b == 0 && b_rank[1] == 2)
{
hp += 1;
b = 4;
bp = 20;
continue;
}
else if(c == 0 && c_rank[1] == 2)
{
cp = 0;
c = 10;
r = generator();
if( r < 500)
{
c = 0;
cp = 1;
}
continue;
}
}
}
cout << hp << " / " << count_1 <<endl << a_rank[0] << b_rank[0] << c_rank[0] << " and " << a_rank[1] << b_rank[1] << c_rank[1] << endl;
}
}
return 0;
}
좀 아시는 분이 보시면 이게 얼마나 조잡한 코딩인지 아실겁니다... ㅠㅠ(교양으로 배웠고, 시간도 좀 지났으니 이해해주세욤)
아무튼 이게 중요한건 아니고 결과는
위대한 성전사 효과가 있든 없든 성전사의 일격 1순위, 심판 2순위, 응징의 방패 3순위 로 사용하는 것이 가장 많은 신성한 힘을 얻을 수 있습니다.
혹시라도 코드를 볼 수 있는 분은 제가 한 코드에 문제가 있으면 한 수 가르쳐주시면 감사합니다....;ㅁ;
기본적으로 가속 50%일 때 글쿨 1초, 성격 3초, 심판 4초, 응방 10초를 기준으로 삼았습니다.
올린 코드가 자꾸 없어지네요... 이유는 모르겠는데 그래서 압축 파일로 올릴께요.