我是javascript的初学者,我正在尝试制作“爽爽4”游戏。
然后,我在游戏板上创建了两个功能:一个是使用3var: raw、coloumn和player来放置玩家的挂钩(set)。
第二个剧本:我给了一个列,它应该找到第一条自由线。
但在我看来它不起作用。
<!DOCTYPE html>
<html>
<head>
<title>Mon Jeu JSV</title>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="plateforme">.</div>
<script src="javascript.js"></script>
</body>
</html>CSS:
#plateforme table td {
width:50px;
height:50px;
border-style:solid;
border-color:blue;
border-radius: 100px;
background-color:white;
}
#plateforme table{
background-color:blue;
}
#plateforme .joueur2{
background-color:yellow;
}
#plateforme .joueur1{
background-color:red;
}JS
var col=6;
var lin=7;
var plateforme= document.querySelector('#plateforme');
var table= document.createElement("TABLE")
var tableauBi = [];
var turn=1;
for ( var i=0;i<lin;i++){
var tr= document.createElement("TR");
tableauBi[i] = [];
table.appendChild(tr);
for ( var j=0;j<col;j++){
var td= document.createElement("TD");
tr.appendChild(td);
tableauBi[i][j]=td;
}
}
plateforme.appendChild(table);
function set (row,column,player){
var elt = tableauBi[row][column];
elt.className = 'joueur'+ player;
this.turn=3 - this.turn;
}
function play (column){
var ligne;
for ( var i=this.lin;i>0;i--){
if (!this.tableauBi[i][column].className){//case vide
ligne=i;
break;
}
}
this.set (ligne,column,this.turn);
}
play(6);当我使用play(6):通常第6列的第一个木质素会被着色。但这里不..。
发布于 2016-02-09 21:23:43
我根本没有优化过您的代码,但是给您!
您有一堆范围错误,您使用的是“this”,而我必须将它们全部删除。当在函数内部时,“这”指的是该函数的作用域,因此执行this.ligne将不会访问当前函数之外的“ligne”变量。
另外,要小心数组索引!如果有6行,就意味着索引从0到5!当然,您可以使用1到6,但是在访问列表中的项时要小心。
var col = 6;
var lin = 7;
var plateforme = document.querySelector('#plateforme');
var table = document.createElement("TABLE")
var tableauBi = [];
var turn = 1;
for (var i = 0; i < lin; i++) {
var tr = document.createElement("TR");
tableauBi[i] = [];
table.appendChild(tr);
for (var j = 0; j < col; j++) {
var td = document.createElement("TD");
tr.appendChild(td);
tableauBi[i][j] = td;
}
}
plateforme.appendChild(table);
function set(row, column, player) {
var elt = tableauBi[row][column];
elt.className = 'a joueur' + player;
turn = 3 - turn;
}
function play(column) {
var ligne;
for (var i = lin-1; i >= 0; i--) { // CAREFUL HERE, you were going out of bounds
if (!tableauBi[i][column].className) { //case vide
ligne = i;
break;
}
}
set(ligne, column, turn);
}
play(5); https://stackoverflow.com/questions/35301814
复制相似问题