Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Tprogramming_42_2020

>https://coolzgh.github.io/Website/
## Knjazev Egor
22 changes: 22 additions & 0 deletions RPG/Archer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using System;

namespace RPG
{
public class Archer : Player
{
public Archer(string name)
: base(name)
{
}

public override double UseUlt()
{
if (IsFire == 0)
{
IsFire = 1;
}

return IsFire;
}
}
}
14 changes: 14 additions & 0 deletions RPG/Game.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;

namespace RPG
{
public class Game
{
public static void Main(string[] args)
{
Logger.Fight();
Console.ReadLine();
}
}
}
19 changes: 19 additions & 0 deletions RPG/Knight.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;

namespace RPG
{
public class Knight : Player
{
public Knight(string name)
: base(name)
{
}

public override double UseUlt()
{
Damage = Math.Floor(Damage * 1.3);
Console.WriteLine($"<<<<<<{Name} добавил к своему урону +30%>>>>>>");
return Damage;
}
}
}
159 changes: 159 additions & 0 deletions RPG/Logger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
using System;
using System.Collections.Generic;

namespace RPG
{
public class Logger
{
public static void Fight()
{
Random rnd = new Random();
List<Player> players = new List<Player>();
string[] namearr = new string[20] { "Coolz", "Jskonst", "MixerXXL", "Etogjesanya", "Exideinside", "Nugmate", "D1njo", "4i4a", "Bandi", "Incris", "Hroma", "MrColter", "Geralt", "Stalin", "Swearless", "Yanix", "Slava228", "Ciri", "Plotva", "Linys" };
Console.WriteLine("Введите количество игроков:");
int number = Convert.ToInt16(Console.ReadLine());
if (number % 2.0 != 0)
{
throw new InvalidOperationException("Количество игроков нечетное");
}

for (int i = 0; i < number; i++)
{
string name = namearr[rnd.Next(0, 19)];
Console.WriteLine($"Выберите класс игрока №{i + 1}\n 1.Рыцарь\n 2.Маг\n 3.Лучник");
int classkey = Convert.ToInt16(Console.ReadLine());
switch (classkey)
{
case 1:
Knight knight = new Knight($"(Рыцарь) {name}({i + 1})");
players.Add(knight);
break;
case 2:
Mage mage = new Mage($"(Маг) {name}({i + 1})");
players.Add(mage);
break;
case 3:
Archer archer = new Archer($"(Лучник) {name}({i + 1})");
players.Add(archer);
break;
default:
throw new InvalidOperationException("Вы нажали неизвестную клавишу");
}
}

int count = players.Count / 2;
int kon = 1;
for (int j = 0; j <= count; j = j + 2)
{
Console.WriteLine($"Кон {kon++}\n");
for (int i = 0; i < players.Count; i++)
{
if (players.Count > i + 1)
{
Console.WriteLine($"------------Да начнётся битва------------");
double p1Health = players[i].GetHealth();
double p2Health = players[i + 1].GetHealth();
Console.WriteLine($"Игрок_1: {players[i].Name}, HP = {p1Health}, Damage = {players[i].Damage}");
Console.WriteLine($"Игрок_2: {players[i + 1].Name}, HP = {p2Health}, Damage = {players[i + 1].Damage}");
while (p1Health > 0 && p2Health > 0)
{
var ult = rnd.Next(2) == 1;
double prevDamagep2 = players[i + 1].Damage;
if (players[i].IsFrozen == 0)
{
if (ult)
{
players[i + 1].UseUlt();
}

if (players[i + 1].IsFrozen == 0)
{
if (players[i + 1].IsFire == 1)
{
Console.WriteLine($"<<<<<<{players[i + 1].Name} выпускает огненные стрелы в противника>>>>>>");
players[i + 1].IsFire = 2;
}
else
{
p1Health = p1Health - players[i + 1].Damage;
Console.WriteLine($"{players[i + 1].Name} наносит урон {players[i + 1].Damage} противнику {players[i].Name}");
}

if (players[i + 1].IsFire == 2)
{
p1Health = p1Health - 2;
Console.WriteLine($"{players[i]} горит и теряет 2 HP");
}

Console.WriteLine($"HP {players[i].Name} = {p1Health}");
}
}
else
{
Console.WriteLine($"{players[i + 1].Name} пропускает ход");
}

players[i + 1].Damage = prevDamagep2;
players[i].IsFrozen = 0;
if (p1Health > 0)
{
double prevDamagep1 = players[i].Damage;
if (players[i + 1].IsFrozen == 0)
{
if (ult)
{
players[i].UseUlt();
}

if (players[i].IsFrozen == 0)
{
if (players[i].IsFire == 1)
{
Console.WriteLine($"<<<<<<{players[i].Name} выпускает огненные стрелы в противника>>>>>>");
players[i].IsFire = 2;
}
else
{
p2Health = p2Health - players[i].Damage;
Console.WriteLine($"{players[i].Name} наносит урон {players[i].Damage} противнику {players[i + 1].Name}");
}

if (players[i].IsFire == 2)
{
p2Health = p2Health - 2;
Console.WriteLine($"{players[i + 1]} горит и теряет 2 HP");
}

Console.WriteLine($"HP {players[i + 1].Name} = {p2Health}");
}
}
else
{
Console.WriteLine($"{players[i].Name} пропускает ход");
}

players[i].Damage = prevDamagep1;
players[i + 1].IsFrozen = 0;
}
else
{
Console.WriteLine($"-------{players[i + 1]} победил-----------\n");
players.RemoveAt(i);
}
}

if (p2Health <= 0)
{
Console.WriteLine($"-------{players[i]} победил-----------\n");
players.RemoveAt(i + 1);
}
}
else
{
j--;
}
}
}
}
}
}
19 changes: 19 additions & 0 deletions RPG/Mage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;

namespace RPG
{
public class Mage : Player
{
public Mage(string name)
: base(name)
{
}

public override double UseUlt()
{
IsFrozen = 1;
Console.WriteLine($"<<<<<<{Name} заморозил противника>>>>>>");
return IsFrozen;
}
}
}
46 changes: 46 additions & 0 deletions RPG/Player.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using System;

namespace RPG
{
public abstract class Player
{
private double health;
private double damage;
private double isFrozen = 0;
private double isFire = 0;
private Random rnd = new Random();

public Player(string name)
{
Name = name;
health = rnd.Next(50, 150);
damage = rnd.Next(20, 40);
Damage = damage;
IsFrozen = isFrozen;
IsFire = isFire;
}

public string Name { get; set; }

public double Damage { get; set; }

public double IsFrozen { get; set; }

public double IsFire { get; set; }

public override string ToString()
{
return Name;
}

public double GetHealth()
{
return health;
}

public virtual double UseUlt()
{
return Damage;
}
}
}
23 changes: 23 additions & 0 deletions RPG/RPG.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
<NoWarn>1573,1591,1701;1702;1705;</NoWarn>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" PrivateAssets="all" />
</ItemGroup>

<PropertyGroup>
<CodeAnalysisRuleSet>../_stylecop/stylecop.ruleset</CodeAnalysisRuleSet>
<GenerateFullPaths>true</GenerateFullPaths>
</PropertyGroup>

<ItemGroup>
<AdditionalFiles Include="../_stylecop/stylecop.json" />
</ItemGroup>

</Project>