[機統] 機率遊戲
※ [本文轉錄自 Math 看板]
作者: sarah21 (Derek Jeter) 看板: Math
標題: [機統] 機率遊戲
時間: Mon Sep 7 21:39:17 2009
我最近寫一個叫color match的遊戲
http://www.lumosity.com/games/color-match
但是我不知道到該如何平衡match與不match的機率
比如說
箱子1(b1)裡有四顆球(1,2,3,4)
箱子2(b2)也有四顆球(one, two ,three, four)
從兩邊各取一顆球,編號match的機率只有1/16,我該如何提高match的機率
我的程式目前寫法為
讓b1隨機產生7個亂數(1藍,2黃,3紅,4黑,5藍,6黃,7紅)
讓b2隨機產生4個亂數(1藍,2黃,3紅,4黑)
如果b1大於4的話,直接指定b2(不在隨機產生b2)的顏色等於b1,以提高match的機率
然後如果b1=b2 or b1=5 or b1=6 or b1=7 的話就是match
如果b1≠b2 and b1≠5 and b1≠6 and b1≠7 的話就是不match
但是這種寫法感覺兩邊還是不平衡
不知道也沒有其他辦法
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.181.180
※ 編輯: sarah21 來自: 220.136.181.180 (09/07 21:40)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.181.180
→
09/08 12:50, , 1F
09/08 12:50, 1F
推
09/08 16:27, , 2F
09/08 16:27, 2F
→
09/08 16:27, , 3F
09/08 16:27, 3F
以下是我目前的程式碼,是action script的
circle_mc.visible=false;//一開始先把他們隱藏起來
cross_mc.visible=false;
var checkKey:int=0;
var totalCorrect:int=0;
var correct:int=0;
var totalAnswered:int=0;
var colorFormat:TextFormat=new TextFormat();
var time:int=90;
var gameTimer:Timer=new Timer(1000,90);
gameTimer.addEventListener(TimerEvent.TIMER,tickGame);
function tickGame(event:TimerEvent):void {
time=time-1;
timer_txt.text=time.toString();
}
gameTimer.addEventListener(TimerEvent.TIMER_COMPLETE,endGame);
function endGame(event:TimerEvent):void {
gotoAndStop(2);
}
gameTimer.start();
var empty:Sprite = new Sprite();//增加一個容器
addChild(empty);
game();//執行function game
function game():void {//整個用function包起來
checkKey=0;
correct=0;
var r:int=(int)(Math.random()*7);
switch (r) {
case 0 :
colorFormat.color=0x00CCFF;//blue
break;
case 1 :
colorFormat.color=0x00FF00;//green
break;
case 2 :
colorFormat.color=0xFF3333;//red
break;
case 3 :
colorFormat.color=0x000000;//black
break;
case 4 :
colorFormat.color=0x000000;//black
break;
case 5 :
colorFormat.color=0xFF3333;//red
break;
case 6 :
colorFormat.color=0x00FF00;//green
break;
}
colorFormat.size=40;
colorFormat.font="Cambria";
color_txt.defaultTextFormat=colorFormat;
empty.addChild(color_txt);
//讓meaning文字方塊裡的文字顏色為隨機顏色
var meaningFormat:TextFormat=new TextFormat();
meaningFormat.size=40;
meaningFormat.font="Cambria";
var n:int=(int)(Math.random()*4);
switch (n) {
case 0 :
meaningFormat.color=0x00CCFF;
break;
case 1 :
meaningFormat.color=0x00FF00;
break;
case 2 :
meaningFormat.color=0xFF3333;
break;
case 3 :
meaningFormat.color=0x000000;
break;
}
meaning_txt.defaultTextFormat=meaningFormat;
empty.addChild(meaning_txt);
var c:int=(int)(Math.random()*4);
switch (c) {
case 0 :
color_txt.text="blue";
break;
case 1 :
color_txt.text="green";
break;
case 2 :
color_txt.text="red";
break;
case 3 :
color_txt.text="black";
break;
}
//match if r = m
var m:int=(int)(Math.random()*4);
//提高match的機率(如果r>=4直接給定m的值)
if (r==4) {
m=3;
}
if (r==5) {
m=2;
}
if (r==6) {
m=1;
}
switch (m) {
case 0 :
meaning_txt.text="blue";
break;
case 1 :
meaning_txt.text="green";
break;
case 2 :
meaning_txt.text="red";
break;
case 3 :
meaning_txt.text="black";
break;
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);
function onKeyPressed(e:KeyboardEvent):void {
switch (e.keyCode) {
case Keyboard.RIGHT :
checkAnswer1();
checkKey=1;
break;
case Keyboard.LEFT :
checkAnswer2();
checkKey=1;
break;
}
}
function checkAnswer1():void {
if (r==m||r==4||r==5||r==6) {
circle_mc.visible=true;
cross_mc.visible=false;
correct=1
} else {
cross_mc.visible=true;
circle_mc.visible=false;
correct=0;
}
}
function checkAnswer2():void {
if (r!=m&&r!=4&&r!=5&&r!=6) {
circle_mc.visible=true;
cross_mc.visible=false;
correct=1;
} else {
cross_mc.visible=true;
circle_mc.visible=false;
correct=0;
}
}
}
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUps);
function onKeyUps(e:KeyboardEvent):void {
if (checkKey==1) {
for (var j:int=0; j<2; j++) {
empty.removeChild(empty.getChildAt(0));
}//洗掉容器裡面的題目
if (correct!=0) {
totalCorrect=totalCorrect+1;
}
totalAnswered=totalAnswered+1;
circle_mc.visible=false;//再度隱藏起來,準備下一題
cross_mc.visible=false;
game();//重新啟動一次fuction game
}
}
※ 編輯: sarah21 來自: 220.136.181.180 (09/08 20:08)
討論串 (同標題文章)