作者sarah21 (Derek Jeter)
看板Programming
标题[机统] 机率游戏
时间Mon Sep 7 21:44:32 2009
※ [本文转录自 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
1F:→ Schelfaniel:不懂,你要的平衡是指怎麽样的平衡? 163.29.29.137 09/08 12:50
2F:推 BadNanEpi:直接设定抽到机率~ 调高你想提高的球.. 220.134.96.34 09/08 16:27
3F:→ BadNanEpi:不就可以了?? 220.134.96.34 09/08 16:27
以下是我目前的程式码,是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)