You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
1.9 KiB
105 lines
1.9 KiB
2 years ago
|
using System;
|
||
|
using TEC.Model;
|
||
|
|
||
|
namespace TEC
|
||
|
{
|
||
|
public class Game
|
||
|
{
|
||
|
private Player[] players;
|
||
|
|
||
|
public Game(Player[] inputPlayers)
|
||
|
{
|
||
|
this.players = inputPlayers;
|
||
|
}
|
||
|
|
||
|
public enum Movement
|
||
|
{
|
||
|
Up = 1,
|
||
|
Down = 2,
|
||
|
Forward = 3,
|
||
|
Backward = 4
|
||
|
}
|
||
|
|
||
|
public void MoveMainPlayer(Movement move)
|
||
|
{
|
||
|
if (this.players.Length <= 0) { return; }
|
||
|
|
||
|
int lastPosX = this.players[0].GetPositionX();
|
||
|
int lastPosY = this.players[0].GetPositionY();
|
||
|
|
||
|
if (move == Movement.Forward)
|
||
|
{
|
||
|
this.players[0].SetPosition(lastPosX + 1, lastPosY);
|
||
|
}
|
||
|
|
||
|
if (move == Movement.Backward)
|
||
|
{
|
||
|
this.players[0].SetPosition(lastPosX - 1, lastPosY);
|
||
|
}
|
||
|
|
||
|
CheckConditions();
|
||
|
PrintField();
|
||
|
}
|
||
|
|
||
|
public delegate void eventPlayersOnSamePointDelegate();
|
||
|
public event eventPlayersOnSamePointDelegate eventPlayersOnSamePoint;
|
||
|
|
||
|
public void CheckConditions()
|
||
|
{
|
||
|
if (this.players.Length > 1)
|
||
|
{
|
||
|
if (this.players[0].GetPositionX() == this.players[1].GetPositionX() &&
|
||
|
this.players[0].GetPositionY() == this.players[1].GetPositionY() )
|
||
|
{
|
||
|
if (this.eventPlayersOnSamePoint != null)
|
||
|
{
|
||
|
this.eventPlayersOnSamePoint();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void PrintField()
|
||
|
{
|
||
|
Console.Clear();
|
||
|
|
||
|
string[] lines = new string[20];
|
||
|
|
||
|
for (int i = 0; i < 20; i++)
|
||
|
{
|
||
|
string line = string.Empty;
|
||
|
|
||
|
for (int j = 0; j < 75; j++)
|
||
|
{
|
||
|
string c = ".";
|
||
|
|
||
|
foreach(Player player in players)
|
||
|
{
|
||
|
if (player.GetPositionX() == j && player.GetPositionY() == i)
|
||
|
{
|
||
|
c = "#";
|
||
|
if (player is Alien)
|
||
|
{
|
||
|
c = "@";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
line = line + c;
|
||
|
}
|
||
|
|
||
|
lines[i] = line;
|
||
|
}
|
||
|
|
||
|
for (int i = lines.Length - 1; i >= 0; i--)
|
||
|
{
|
||
|
Console.WriteLine(lines[i]);
|
||
|
}
|
||
|
|
||
|
for(int p = 0; p < players.Length; p++)
|
||
|
{
|
||
|
Console.WriteLine("Игрок №" + (p+1) + " - " + players[p].name);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|