Javascript for循环不重复字符串

时间:2017-06-05 07:58:13

标签: javascript

这里的Javascript非常新,我认为我有一个逻辑问题。所以基本上对于I级建立一个刽子手游戏,我遇到双字母问题。例如,如果这个词是食物,当我进入" O"它将通过for循环,击中第一个O,将其推到屏幕上,并停在其轨道上。我可以做任何我想做的事情#O;" O"但是第二个或任何其他重复的字母会被忽略。现在我在for()循环开始时直接编写的警报将成功打印" O",将其记录到控制台,甚至完全写出document.write( splitWord [米]);

所以对我而言,我认为必须是我的if声明。我可能100%错误,但我认为if语句告诉它看到第一个" O",在括号中做什么,然后转到下一个字母跳过任何双打。如果我对此是对的,那么保持循环的更好选择是什么,所以" O"会被填满。如果我完全错了,完成这项任务会有更好的行动方案。非常感谢任何帮助。

由于



var remainingLetters = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];


var removedLetters =[];
var wordList = ["django", "the#good#the#bad#and#the#ugly", "a#fistful#of#dollars","for#a#few#dollars#more","once#upon#a#time#in#the#west","the#wild#bunch","pale#rider"];
var titleList =["django", "The Good The Bad And The Ugly", "A Fistful of Dollars", "For a few Dollars More", "Once Upon a Time in the West", "The Wild Bunch", "Pale Rider"];
var songList =["Jango", "The Good The Bad And The Ugly", "Fistful of Dollars", "For a few Dollars More", "Once Upon a Time in the West", "The Wild Bunch", "Pale Rider"]



var selectedWord;
console.log(selectedWord);

var livesRemaining = 12;
var score = 0;
var wordWorth = 0;
var wins = 0;
var losses = 0;
var gameOn = false;

function chooseAWord(){
	selectedWord = wordList[Math.floor(Math.random() * wordList.length)];
	console.log(selectedWord);
}

function printWord(){
	 document.getElementById("wordDisplayer").innerHTML = selectedWord;
}


function buildTiles(){ 
  // create a new div element 
  // and give it some content 
  var splitWord = selectedWord.split("");
  for(i = 0; i < splitWord.length; i++){
  	if (splitWord[i] != '#'){
  		 // var newTile = document.createElement("div"); 
  		//var newContent = document.createTextNode(""); 
  		  //newTile.appendChild(newContent); //add the text node to the newly created div.

		document.getElementById("wordTiles").innerHTML += '<div class="tileStyle" id="' + splitWord[i] + '"></div>';

			wordWorth++;
			


  		// add the newly created element and its content into the DOM 
  		//var currentDiv = document.getElementById("wordTiles");  
   		//currentDiv.appendChild(newTile, currentDiv);
   
  		// newTile.setAttribute("class", "tileStyle");
  			}else if(splitWord[i] == '#'){
  				var blankTile = document.createElement("div"); 
  				var spaceContent = document.createTextNode("");
  				blankTile.appendChild(spaceContent);

  				document.getElementById("wordTiles").innerHTML += '<div class="blankStyle" id="' + splitWord[i] + '"></div>';
  			}
  		}
}


function clearTiles(){
	var myNode = document.getElementById("wordTiles");
	while (myNode.firstChild) {
   	 myNode.removeChild(myNode.firstChild);
	}

}

function refreshAlphabet(){
	remainingLetters = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
	displayAvailableLetters();
}


function keyPressed(){
	checkPlayerChoiceNew();
}

var playerGuess = document.onkeyup = function myKeyDown(event){
	playerGuess = event.key;
	if(gameOn==true){
		keyPressed();
	}else{

	}
}




function checkPlayerGuess(){
	document.getElementById("isThisWorking").innerHTML = playerGuess;

}




// function myFunction() {
//    var str = "Tha bast things in lifa ara free";
//    var patt = new RegExp(playerGuess);
 //   var res = patt.test(selectedWord.toLowerCase());
//    document.getElementById("demo").innerHTML = res;
//}


function displayAvailableLetters(){
	document.getElementById("lettersStillAvailable").innerHTML = remainingLetters;
	console.log(remainingLetters);
	
}

function displayRemovedLetters(){
	document.getElementById("lettersUsed").innerHTML = removedLetters;
}


function updateScore(){
	document.getElementById("scoreTotal").innerHTML = score;
}

function updateWins(){
	document.getElementById("winTotals").innerHTML = wins;
}
function updateLosses(){
	document.getElementById("lossTotals").innerHTML = losses;
}

function checkScore(){
	if(score == selectedWord.length && livesRemaining > 0){
		document.getElementById("gameOver").innerHTML = "WINNER! Congratulations!!!";
		wins++;
		updateWins();
		gameOn=false;
	}else if (livesRemaining == 0){
		livesRemaining == -1;
		document.getElementById("gameOver").innerHTML = "You have failed!";
		losses++;
		updateLosses();
		gameOn=false;
	}else{
		document.getElementById("gameOver").innerHTML = "Good Luck!";
	}
}

function checkPlayerChoiceNew(){
	var splitWord = selectedWord.split("");
	var choice = new RegExp(playerGuess);
	var compareWord = choice.test(selectedWord.toLowerCase());
	var compareAlphabet = choice.test(remainingLetters);
	var compareRemovedList = choice.test(removedLetters);
	
	for (m = 0; m < splitWord.length; m++){
		//alert(splitWord[m]);
		if(playerGuess == splitWord[m]){
			document.getElementById(splitWord[m]).innerHTML = playerGuess;
	
		}
	}
}
//check playerGuess against selectedWord
function checkPlayerChoice(){
	var choice = new RegExp(playerGuess);
	var compareWord = choice.test(selectedWord.toLowerCase());
	var compareAlphabet = choice.test(remainingLetters);
	var compareRemovedList = choice.test(removedLetters);

	if(compareWord == true && compareAlphabet == true ){
		document.getElementById("demo").innerHTML = playerGuess;
		
		remainingLetters.splice(remainingLetters.indexOf(playerGuess),1);
		displayAvailableLetters();
		displayRemovedLetters();
		score++;
		updateScore();
		checkScore();
	}else if(compareWord == true && compareAlphabet == false){
		document.getElementById("demo").innerHTML = "Already tried that one";
	}else if(compareWord == false && compareAlphabet == true){
		livesRemaining--;
		document.getElementById("lives").innerHTML = livesRemaining;
		removedLetters.push(playerGuess.toLowerCase());
		remainingLetters.splice(remainingLetters.indexOf(playerGuess),1);
		updateScore();
		checkScore();
		displayAvailableLetters();
		displayRemovedLetters();
	}else if (compareWord == false && compareAlphabet == false && compareRemovedList == true){
		document.getElementById("demo").innerHTML = "Already tried that one ;)";
	}else if (compareWord == false && compareAlphabet == false && compareRemovedList == true){

	}else{
		/*livesRemaining--;
		document.getElementById("lives").innerHTML = livesRemaining;
		removedLetters.push(playerGuess.toLowerCase());
		updateScore();
		checkScore();
		displayAvailableLetters();
		displayRemovedLetters();*/
		document.getElementById("demo").innerHTML = "Not a Valid Key";
	}
}





//document.onkeyup = function myKeyDown(event){
//	playerGuess = event.key;
	
//}

//start / Restart the game
function resetGame() {
	livesRemaining = 12;
	score =0;
	wordWorth = 0;
	clearTiles();
	document.getElementById("lives").innerHTML = livesRemaining;
	chooseAWord();
	printWord();
	buildTiles();
	refreshAlphabet();
	gameOn=true;
}
&#13;
.tileStyle{
	width:30px;
	height:30px;
	border:1px solid black;
	background-color:green;
	float:left;
	margin-left:10px;
	margin-right:10px;
	margin-bottom:10px;
	margin-top:10px;
}
.blankStyle{
	width:30px;
	height:30px;
	background-color:orange;
	float:left;
	margin-left:10px;
	margin-right:10px;
	margin-bottom:10px;
	margin-top:10px;
}
.fixer{
	width:100%;
	height:10px;
	clear:both;
}
&#13;
<body>

<button onclick="checkPlayerChoice()">Try it</button>

<p id="demo"></p>

<p> lives: </p>
<p id = "lives"> 0</p>
<p> Score: </p>
<p id = "scoreTotal">0</p>
<p>wins</p>
<p id ="winTotals">0</p>
<p>losses</p>
<p id ="lossTotals">0</p>
<p id ="gameOver"></p>

<button onclick ="resetGame()">New Game</button>

<p>Here is the word</p>
<p id = "wordDisplayer">Press New Game to Start</p>
<div id = "wordTiles"></div>
<div class ="fixer"></div>

<button onclick ="checkPlayerGuess()">What Key was Pressed?</button>
<p id ="isThisWorking">What will I say?</p>

<p>Letters Still Available</p>
<p id ="lettersStillAvailable"></p>
<p>Bad Guesses</p>
<p id ="lettersUsed"></p>

<br />
&#13;
&#13;
&#13;

&#13;
&#13;
selectedWord ="food";
function checkPlayerChoiceNew(){
	var splitWord = selectedWord.split("");
	var choice = new RegExp(playerGuess);
	var compareWord = choice.test(selectedWord.toLowerCase());
	var compareAlphabet = choice.test(remainingLetters);
	var compareRemovedList = choice.test(removedLetters);
	
	for (m = 0; m < splitWord.length; m++){
		//alert(splitWord[m]);
		if(playerGuess == splitWord[m]){
			document.getElementById(splitWord[m]).innerHTML = choice;
	
		}
	}
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您可以参考以下逻辑。在这个例子中,我给出了一些输入。

&#13;
&#13;
var selectedWord ="food";
var displayString = [];
for(var i = 0; i < selectedWord.length; i++){
  displayString[i] = "-"
}
var outputEle = document.getElementById("output");
var div = document.createElement('div');
div.innerText = displayString.join(" ");
outputEle.appendChild(div);
function checkPlayerChoiceNew(playerGuess){
  var newWord = "";
  var regExp = new RegExp(playerGuess,'ig')
	selectedWord.replace(regExp, function(value, index){  
    displayString[index] = value;
    return value;  
  });
  var div = document.createElement('div');
  div.innerText = displayString.join(" ");
  outputEle.appendChild(div);
  newWord = displayString.join("");
  if(selectedWord == newWord){ alert("You Won the game"); }
  //outputEle.innerText = displayString.join(" ");  
}
checkPlayerChoiceNew('o');
checkPlayerChoiceNew('g');
checkPlayerChoiceNew('d');
checkPlayerChoiceNew('f');
&#13;
<div id="output">
  
</div>
&#13;
&#13;
&#13;