Working seeding of rng's.

This commit is contained in:
Robert Kolner committed 2012-11-28 22:11:28 +01:00
1 parent d834c1cca4
commit 30a434f78d
3 files changed
+19 -7

No files matched your search

+5 -4
View File
@@ -1,11 +1,12 @@
<html>
<head>
<script src=http://davidbau.com/encode/seedrandom-min.js></script>
<script src="jquery-1.7.1.js"></script>
<script src="utils.js"></script>
<script src="tetris-stats.js"></script>
<script src="tetris-canvas.js"></script>
<script src="tetris.js"></script>
<style>
body {
font-family: Courier, "Courier New", monospace;
@@ -64,15 +65,15 @@
var aiRight = QueryString.ai2;
include('tetris-ai-'+aiLeft+'.js');
include('tetris-ai-'+airight+'.js');
include('tetris-ai-'+aiRight+'.js');
</script>
</head>
<body>
<script>
window.onload = function() {
eval('new '+aiLeft+'("tetris-board-left")');
eval('new '+aiRight+'("tetris-board-right")');
eval('new '+aiLeft+'("tetris-board-left", 1337)');
eval('new '+aiRight+'("tetris-board-right", 1337)');
};
</script>
+4 -2
View File
@@ -1,4 +1,6 @@
function test(elementId) {
function test(elementId, randomseed) {
if (typeof randomseed === 'undefined') randomseed = Math.floor(1337 * Math.random());
var ACTION_LEFT = 1;
var ACTION_RIGHT = 2;
var ACTION_ROTATE = 3;
@@ -90,7 +92,7 @@ function test(elementId) {
}
this.init = function() {
this.game = new TetrisGame(elementId);
this.game = new TetrisGame(elementId, undefined, undefined, randomseed);
this.game.startGame();
this.startAI();
}
+10 -1
View File
@@ -1,4 +1,7 @@
function TetrisGame(canvasId, linesCounterId, nextBricksCanvasId) {
function TetrisGame(canvasId, linesCounterId, nextBricksCanvasId, seed) {
if (typeof seed === 'undefined') seed = Math.floor(1337 * Math.random());
Math.seedrandom(seed);
/*********/
/* Enum: */
/*********/
@@ -47,6 +50,8 @@ function TetrisGame(canvasId, linesCounterId, nextBricksCanvasId) {
this.nextBrickArray = Array(5);
this.nextBrickArrayIndex = 0;
this.rng = Math.random;
/**************/
/* Functions: */
/**************/
@@ -110,7 +115,11 @@ function TetrisGame(canvasId, linesCounterId, nextBricksCanvasId) {
}
this.getRandomBrick = function() {
var oldRandom = Math.random;
Math.random = this.rng;
return 1 + Math.floor(Math.random() * 7);
this.rng = Math.random;
Math.random = oldRandom;
}
this.getNextBrick = function() {