# 19、选择路线游戏

19、选择路线游戏

<script>

var line = "";

var x = 0;

var y = 0;

var full="*";

var blank = ".";

var wall = "#";

var goal = "\$";

var fill = "";

// Functions to create the board

function makeboard() {

for (var i=1; i<= 10; i++)

this[i] = new makeRow();

return this;

}

function makeRow() {

for (var i=1; i<= 10; i++)

this[i]=blank;

return this;

}

// Functions to fill & clear the board.

function clearBoard (form) {

// Clears & resets the board

x = 0;

y = 0;

form.xval.value = 1;

form.yval.value = 1;

for (var i=1; i<= 10; i++)

for (var j=1; j<= 10; j++)

theBoard[i][j]=blank;

drawMaze();

fillBoard(form);

return;

}

function fillBoard (form) {

// Clear board buffer

line = "";

form.grid.value = "";

// Fill board buffer

for (var i=1; i<= 10; i++)

for (var j=1; j<= 10; j++)

line += theBoard[i][j];

// Move buffer contents to board

form.grid.value=line;

}

function plot (v, h) {

theBoard[v][h] = fill;

}

function drawMaze() {

// Plots the walls of the maze

//

// Ideally, a function should do this automatically,

// or maybe I should write a maze generating function in JS!

// Note: This program operates in Y,X co-ordinates (not standard X,Y).

theBoard[10][10] = goal;

theBoard[1][2] = wall;

theBoard[2][2] = wall;

theBoard[4][1] = wall;

theBoard[4][2] = wall;

theBoard[4][3] = wall;

theBoard[2][3] = wall;

theBoard[5][2] = wall;

theBoard[6][2] = wall;

theBoard[2][5] = wall;

theBoard[4][5] = wall;

theBoard[5][5] = wall;

theBoard[2][6] = wall;

theBoard[2][7] = wall;

theBoard[9][10] = wall;

theBoard[9][9] = wall;

theBoard[8][9] = wall;

theBoard[7][9] = wall;

theBoard[10][7] = wall;

theBoard[9][7] = wall;

theBoard[8][7] = wall;

theBoard[6][7] = wall;

theBoard[9][2] = wall;

theBoard[9][3] = wall;

theBoard[9][4] = wall;

theBoard[8][2] = wall;

theBoard[7][4] = wall;

theBoard[7][5] = wall;

theBoard[6][5] = wall;

theBoard[6][6] = wall;

theBoard[6][7] = wall;

theBoard[6][8] = wall;

theBoard[6][9] = wall;

theBoard[5][7] = wall;

theBoard[5][8] = wall;

theBoard[5][9] = wall;

theBoard[4][9] = wall;

}

function update(form) {

var horiz = eval(form.xval.value);

var vert = eval(form.yval.value);

plot(vert,horiz);

fillBoard(form);

return;

}

function initBoard() {

theBoard = new makeboard();

fill = full;

clearBoard(document.board);

update(document.board);

}

// Functions to handle the player piece

//

// I suppose I could have written one function to handle this,

// but it was getting too complex.  Feel free to try. :)

//

function decx(form) {

fill = blank;

update(form);

checkx = eval(form.xval.value - 1);

checky = form.yval.value;

if (form.xval.value > 1) {

if (theBoard[checky][checkx] != wall) {

form.xval.value=eval(form.xval.value - 1);

}

else {

}

if (theBoard[checky][checkx] == goal) {

}

}

fill = full;

update(form);

}

function incx(form) {

fill = blank;

update(form);

checkx = eval(1 * form.xval.value + 1);

checky = form.yval.value;

if (form.xval.value < 10) {

if (theBoard[checky][checkx] != wall) {

form.xval.value=eval(1 * form.xval.value + 1);

}

else {

}

if (theBoard[checky][checkx] == goal) {

}

}

fill = full;

update(form);

}

function decy(form) {

fill = blank;

update(form);

checkx = form.xval.value;

checky = eval(form.yval.value - 1);

if (form.yval.value > 1) {

if (theBoard[checky][checkx] != wall) {

form.yval.value=eval(form.yval.value - 1);

}

else {

}

if (theBoard[checky][checkx] == goal) {

}

}

fill = full;

update(form);

}

function incy(form) {

fill = blank;

update(form);

checkx = form.xval.value;

checky = eval(1 * form.yval.value + 1);

if (form.yval.value < 10) {

if (theBoard[checky][checkx] != wall) {

form.yval.value=eval(1 * form.yval.value + 1);

}

else {

}

if (theBoard[checky][checkx] == goal) {

}

}

fill = full;

update(form);

}

// Various Functions

function cheater (form) {

// Refuse to change values manually, and start over. CHEATER!

clearBoard(form);

update(form);

}

</script>

<form method="post" name="board">

<input type='button' value='Reset' onClick='clearBoard(this.form);update(document.board);'>

<br>

<textarea name="grid" rows="12" cols="10" wrap=virtual&rt;</textarea&rt;<br>

<!-- virtual-wrap is the key! Now one text line becomes a grid! -->

<table>

<tr>

<td><input type='button' value='UP' onClick='decy(this.form)'></td>

<td><input type='text' value='1' size=5 name='yval' onChange='cheater(this.form);'></td>

<td><input type='button' value='DOWN' onClick='incy(this.form)'></td>

<tr>

<td><input type='button' value='LEFT' onClick='decx(this.form)'></td>

<td><input type='text' value='1' size=5 name='xval' onChange='cheater(this.form);'></td>

<td><input type='button' value='RIGHT' onClick='incx(this.form)'></td>

</table>

</form>

Write a comment