private void gameLoop_Tick(object sender, EventArgs e) { //move hero if (leftArrowDown) { hero.Move("left"); //adds to moveCount moveCount++; } if (rightArrowDown) { hero.Move("right"); moveCount++; } if (upArrowDown) { hero.Move("up"); moveCount++; } if (downArrowDown) { hero.Move("down"); moveCount++; } //how to make sure hero cannot move diagonally? /*if (upArrowDown && rightArrowDown) * { * upArrowDown = false; * } * /* if (upArrowDown && leftArrowDown) * { * hero.x = hero.x + 0; * } * if (downArrowDown && rightArrowDown) * { * hero.x = hero.x + 0; * } * if (downArrowDown && leftArrowDown) * { * hero.x = hero.x + 0; * }*/ //collision between hero box and boxes foreach (Box b in boxes) { if (b.Collision(hero)) { if (leftArrowDown) { b.Move("left"); } else if (upArrowDown) { b.Move("up"); } else if (rightArrowDown) { b.Move("right"); } else if (downArrowDown) { b.Move("down"); } } } //collision between boxes and boxes //tried to make it so boxes cannot overlap foreach (Box b in boxes) { if (b.Collision(b) && leftArrowDown) { if (leftArrowDown) { leftArrowDown = false; } else if (upArrowDown) { b.y = b.y + 0; } else if (rightArrowDown) { b.x = b.x + 0; } else if (downArrowDown) { b.y = b.y + 0; } } } //by setting the bools to false after pressing button, //we stop the hero from reaching mach speed in an instant leftArrowDown = rightArrowDown = upArrowDown = downArrowDown = false; //move counter increases with every move made by the hero moveCounter.Text = "Moves: " + moveCount; //Collision between dots and boxes //foreach dot in dots if a box is colliding increase a counter. If counter is 5, stop game foreach (Dot d in dots) { if (d.Collision(Box)) { dotCovered++; } else { dotCovered = 0; } } if (dotCovered == 5) { ResultsScreen rs = new ResultsScreen(); this.Controls.Add(rs); } Refresh(); }