Flash CS4 + ActionScript 3.0로 만든 조작된
주사위.
주사위 굴리기 버튼을 마우스로 클릭할 때 마다 주사위의 눈이 나오고 현재 나온 수의 뒷쪽에
밝은 노란색이 표시되고 각각 주사위의 나온 눈 수와 나온 확률이 표시된다.
주사위 눈 중에서 3이 압도적으로 많이 나오는(60%를 넘게) 주사위를 만들고 각각의
눈이 나온 수와 나온 확률 수를 표시하게 하기.
이런 방법을 활용하면 어떤 수가 다른 수들에 비해 어떤 정도의 확률로 더 나오게 조절이
가능해서 캐릭터들의 특성을 정하거나 할 때 사용이 가능할 듯.
예를 들어 1이 보통, 2가 울기, 3이 웃기, 4가 화내기... 등이라고 정할 경우 위의 3이 자주 나오는 주사위는
주로 웃는 상태를 유지하게 된다는 것.
15/5/6 수
1에서 100 사이의 난수를 일단 구한 뒤 50이하는 무조건 3의 눈으로 정하고
50이상일 경우엔 새로 1에서 6 사이의 난수를 구해 정하는 방식.
결국 3은 50% + 1/6(약 17%) 의 확률로 60%가 넘게 나오게 된다.
뭔가 배열을 활용하면 좀 더 코드의 축약, 정리가 가능할 듯 한데 귀찮아서 이 정도까지만.
|
화면상에 'diceM'란 이름의 6개의 프레임으로 주사위 6개의 눈을 표현하는
주사위 무비클립, 'pointM' 이란 이름의 현재 나온 주사위 눈 수 뒷쪽에 밝은 노란색을 비추는 무비클립, 'rollButM'이란
이름의 버튼 모양 무비클립과 주사위 눈 수 표시용 'd1'~'d6', 주사위 눈 등장 확률 표시용 'p1'~'p6'의
이름을 가진 다이나믹 텍스트 박스를 만들어 뒀다.
var n1=0,n2=0,n3=0,n4=0,n5=0,n6=0; //주사위 눈 나온 숫자 저장용
var r1=0,r2=0,r3=0,r4=0,r5=0,r6=0; //주사위 눈 나온 확률 저장용
var totNum=0; //주사위 굴린 총 횟수 저장용
function init(){
displayDiceNums(); //각 주사위 눈 나온 숫자 표시
rollButM.addEventListener(MouseEvent.CLICK, butClick);
}
function butClick(e:MouseEvent){ //버튼 클릭시
var diceNum = throwDice();
diceM.gotoAndStop(diceNum); //주사위 모양 변경
pointM.gotoAndStop(diceNum); //나온 숫자 비추기
switch(diceNum){ //주사위 나온 수에 따라 해당 값 증가 시키기
case(1): n1++; break;
case(2): n2++; break;
case(3): n3++; break;
case(4): n4++; break;
case(5): n5++; break;
case(6): n6++; break;
}
displayDiceNums(); //각 주사위 눈 나온 숫자, 확률 표시
}
function throwDice(){ //주사위 던지기
//일단 0~100 사이 수를 구한다.
var randomProbability = Math.random()*101;
if( randomProbability < 50){//나온 난수가 50이하일 경우
return 3;
}else{//그외의 경우
return Math.floor(Math.random()*7);
}
}
function displayDiceNums(){ //각 주사위 눈 나온 숫자, 확률 표시
d1.text = n1; //나온 숫자들 표시
d2.text = n2;
d3.text = n3;
d4.text = n4;
d5.text = n5;
d6.text = n6;
//나온 확률 구해 표시하기
totNum = n1+n2+n3+n4+n5+n6;
if(totNum == 0) totNum = 1; //맨처음 0으로 나누기 방지
r1 = n1 / totNum * 100;
r2 = n2 / totNum * 100;
r3 = n3 / totNum * 100;
r4 = n4 / totNum * 100;
r5 = n5 / totNum * 100;
r6 = n6 / totNum * 100;
p1.text = r1;
p2.text = r2;
p3.text = r3;
p4.text = r4;
p5.text = r5;
p6.text = r6;
}
init(); |