Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ilja Maksakov RPG #80

Open
wants to merge 10 commits into
base: Ilja_Maksakov
Choose a base branch
from
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
21 changes: 21 additions & 0 deletions RPG/Archer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public class Archer : Player
{
public Archer()
: this("Незадано")
{
}
public Archer(string name)
: base(name)
{
Skills.Add(new ArcherSkill());
Class = "Archer";
}

}
}
25 changes: 25 additions & 0 deletions RPG/ArcherSkill.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public class ArcherSkill : IUseSkill
{
public int TimesUsedSkill = 0;
public void UseSkill(Player user)
{
if (TimesUsedSkill < 1)
{
user.Opponent.Effects.Add(new FireArrow());
Logger.LogText($"({user.Class}) {user.Name} использует (Огненные стрелы) на ({user.Opponent.Class}) {user.Opponent.Name}.");
TimesUsedSkill++;
}
else
{
user.Usingskill = new Attack();
user.UseSkill();
}
}
}
}
15 changes: 15 additions & 0 deletions RPG/Attack.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public class Attack : IUseSkill
{
public void UseSkill(Player user)
{
user.Opponent.HP -= user.Strength;
Logger.LogText($"({user.Class}) {user.Name} наносит урон {user.Strength} противнику ({user.Opponent.Class}) {user.Opponent.Name}.");
Acerlaorion marked this conversation as resolved.
Show resolved Hide resolved
}
}
}
74 changes: 74 additions & 0 deletions RPG/Battle.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public static class ClassBattle
{
public static Player Battle(Player w)
{
Random rnd = new Random();
while (w.HP > 0 && w.Opponent.HP > 0)
{
int RandomSkill1 = rnd.Next(0, w.Skills.Count);
int RandomSkill2 = rnd.Next(0, w.Opponent.Skills.Count);
w.ProcEffects();
if (w.isStunned == false)
{
w.Usingskill = w.Skills[RandomSkill1];
w.UseSkill();
}
else
{
w.isStunned = false;
for (int i = 0; i < w.Effects.Count; i++)
{
if (w.Effects[i] is Skip)
{
w.Effects.RemoveAt(i);
i--;
}
}
}
w.Opponent.ProcEffects();
if (w.Opponent.HP > 0)
{
if (w.Opponent.isStunned == false)
{
w.Opponent.Usingskill = w.Opponent.Skills[RandomSkill2];
w.Opponent.UseSkill();
}
else
{
w.Opponent.isStunned = false;
for (int i = 0; i < w.Effects.Count; i++)
{
if (w.Opponent.Effects[i] is Skip)
{
w.Opponent.Effects.RemoveAt(i);
i--;
}
}
}
}
}
if (w.HP < 1)
{
Logger.LogText($"({w.Class}) {w.Name} погиб!\n");
w.Opponent.HP = rnd.Next(1, 100);
w.Opponent.Effects.Clear();
return w;
}
else if (w.Opponent.HP < 1)
{
Logger.LogText($"({w.Opponent.Class}) {w.Opponent.Name} погиб!\n");
w.HP = rnd.Next(1, 100);
w.Effects.Clear();
return w.Opponent;
}
throw new Exception("Fatal error");

}
}
}
16 changes: 16 additions & 0 deletions RPG/FireArrow.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
 using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public class FireArrow : IEffect
{
public const int DamageFireArrow = 2;
public void Proc(Player owner)
{
owner.HP -= DamageFireArrow;
Logger.LogText($"({owner.Class}) {owner.Name} получает урон {DamageFireArrow} от эффекта Fire Arrow.");
}
}
}
73 changes: 73 additions & 0 deletions RPG/Game.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
namespace RPG
{
class Game
{
static void Main(string[] args)
{
string[] names = { "WhiteCat", "Vaxei", "Alumetri", "idke", "Micca", "FlyingTuna", "Karthy", "RyuK", "Varvalian",
"Mathi", "FGSky", "fieryrage", "firebat92", "chocomint", "Abyssal", "Aireu"};
int n = 0;
try
{
Console.Write($"Введите кол-во игроков(1-16):");
string nString = Console.ReadLine();
n = Convert.ToInt32(nString);
}
catch (System.FormatException)
{
Console.Write($"Введите кол-во игроков(1-16):");
string nString = Console.ReadLine();
n = Convert.ToInt32(nString);
}
while (n % 2 != 0 || n <= 0)
{
Console.Write($"Введите кол-во игроков(1-16):");
n = Convert.ToInt32(Console.ReadLine());
}
Random rnd = new Random();
List<Player> players = new List<Player>();
List<Player> winners = new List<Player>();
int k = 0;
int kon = 1;
while (players.Count < n)
{
int c1 = rnd.Next(0, 3);
switch (c1)
{
case 0:
players.Add(new Knight(names[k]));
break;
case 1:
players.Add(new Archer(names[k]));
break;
case 2:
players.Add(new Mage(names[k]));
break;
}
k++;
}
Logger.LogText($"{kon++}-й Кон\n");
while (players.Count + winners.Count > 1)
{
if (players.Count >=2)
{
Player tempPlayer = ClassBattle.Battle(players[PickPlayers.PickOp(players)]);
winners.Add(tempPlayer.Opponent);
players.Remove(tempPlayer.Opponent);
players[players.IndexOf(tempPlayer)].Opponent.Opponent = null;
players.Remove(tempPlayer);
}
else
{
Logger.LogText($"{kon}-й Кон\n");
players.AddRange(winners);
winners.Clear();
kon++;
}
}
Logger.LogText($"({winners[0].Class}) {winners[0].Name} WINNER!!!");
}
}
}
11 changes: 11 additions & 0 deletions RPG/IEffect.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public interface IEffect
{
void Proc(Player owner);
}
}
11 changes: 11 additions & 0 deletions RPG/IUseSkill.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public interface IUseSkill
{
void UseSkill(Player user);
}
}
21 changes: 21 additions & 0 deletions RPG/Knight.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public class Knight : Player
{
public Knight()
: this("Незадано")
{
}
public Knight(string name)
:base(name)
{
Skills.Add(new KnightSkill());
Class = "Knight";
}

}
}
15 changes: 15 additions & 0 deletions RPG/KnightSkill.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public class KnightSkill : IUseSkill
{
public void UseSkill(Player user)
{
user.Opponent.HP -= user.Strength * 1.3;
Logger.LogText($"({user.Class}) {user.Name} использует (Удар возмездия) и наносит урон {user.Strength * 1.3} противнику ({user.Opponent.Class}){user.Opponent.Name}.");
}
}
}
18 changes: 18 additions & 0 deletions RPG/Logger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public static class Logger
{
public static void LogVS(Player player1)
{
Console.WriteLine($"{player1.Class} {player1.Name} vs {player1.Opponent.Class} {player1.Opponent.Name}.");
}
public static void LogText(string message)
{
Console.WriteLine(message);
}
}
}
21 changes: 21 additions & 0 deletions RPG/Mage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public class Mage : Player
{
public Mage()
: this("Незадано")
{
}
public Mage(string name)
: base(name)
{
Class = "Mage";
Skills.Add(new MageSkill());
}

}
}
17 changes: 17 additions & 0 deletions RPG/MageSkill.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace RPG
{
public class MageSkill : IUseSkill
{
public void UseSkill(Player user)
{
user.Opponent.Effects.Add(new Skip());
Logger.LogText($"({user.Class}) {user.Name} использует (Заворожение) на ({user.Opponent.Class}) {user.Opponent.Name}.");

}
}
}
23 changes: 23 additions & 0 deletions RPG/PickPlayers.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace RPG
{
public class PickPlayers
{
public static int PickOp(List<Player> players)
{
Random rnd = new Random();
int randomplayer1 = rnd.Next(0, players.Count);
int randomplayer2 = rnd.Next(0, players.Count);
while(randomplayer1 == randomplayer2)
{
randomplayer2 = rnd.Next(0, players.Count);
}
players[randomplayer1].Opponent = players[randomplayer2];
players[randomplayer2].Opponent = players[randomplayer1];
return randomplayer1;
}
}
}
Loading