/* ========================================================================== * Project Name: Atzimess darbs * Apraksts: CS GO 2 spele veidota konsole parasta simulacija un vienkarsota versija cs go 2 * Autors: Andrejs Šorecs * Grupa: 110 * Datums: 30.05.2026 * Versija: 1.3 * ========================================================================== */ using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Security.Permissions; using System.Text; using System.Threading.Tasks; namespace atzimes_darbs { public class Player { // speletaji public string name { get; set; } public int HP { get; set; } public int Point { get; set; } public Player(string name, int HP, int Point) { this.name = name; this.HP = HP; this.Point = Point; } public bool IsAlive() // atgriez vertibu True ja player ir dzivs ja ne tad False { return HP > 0; } } public abstract class Weapon // abstrakta klase ieroci { public string name { get; protected set; } public Weapon(string name) { this.name = name; } public abstract void GunAction(Player target, Player attacker); } public class Gun : Weapon { public int ammo { get; private set; } public int dmg { get; private set; } public double fire_rate { get; private set; } public double reload_time { get; private set; } public int magazine { get; private set; } public Gun(string name, int dmg, int ammo, int magazine, double reload_time, double fire_rate) : base(name) { this.dmg = dmg; this.ammo = ammo; this.magazine = magazine; this.reload_time = reload_time; this.fire_rate = fire_rate; } public override void GunAction(Player target, Player attacker) { Random rnd = new Random(); int reload_time = Convert.ToInt32(this.reload_time * 1000); // parladesanas laiks double fire_rate = 1000 / (this.fire_rate / 60); // cik ilgi paiet kamer izsaus nakoso lodi int fire_rate2 = Convert.ToInt32(fire_rate); //no double konverto uz int int misscount = 0; // magazina cikls if (target.Point >= 13 || attacker.Point >= 13) return; for (int i = 0; i < magazine; i++) // arejais cikls kas pildas cik ir magazinu { // lodes cikls for (int j = 0; j < ammo; j++) // ieksejas cikls pildas tik cik ir lodes { if (target.HP <= 0 || misscount >= 3) // parbaude vai ir nepieciesams HP un vai nav daudz noskelets { return; } int shot = rnd.Next(1, 3); Console.WriteLine("===1 vai 2==="); int rnd_input = Convert.ToInt32(Console.ReadLine()); // Speletajs pats ievada un pec tam ja ievadits sakrit ar random tad speletajs trapa if (shot == rnd_input) // ja trapija { Console.WriteLine("=Trapijaa!!!=");//debug Console.Write($"{target.name} HP:{target.HP} - {dmg} = "); target.HP = Math.Max(0, target.HP - dmg); Console.WriteLine($"{target.name} HP:{target.HP}"); Console.WriteLine(); System.Threading.Thread.Sleep(fire_rate2); // gaida tik ilgi kamer vares saut nakosa lode if (!target.IsAlive()) // ja speletajam ir HP mazaks pa 0 vins ir miris { Console.WriteLine("=Player Dead!=");//debug attacker.Point += 1; System.Threading.Thread.Sleep(2000); return; } } else// cits gadijums { Console.WriteLine("=miss!!!="); misscount++; Console.WriteLine($"Tu noskeleji {misscount}. reizes"); if (misscount >= 3) // ja speletajs vairak pa 3 reizem noskele tad sauj nakosais speletajs { Console.WriteLine("Tu pa daudz nošķelēji!!! Pretinieks sak uzbrukumu"); return; } System.Threading.Thread.Sleep(fire_rate2); } } if (target.IsAlive() && misscount < 3) // ja speletajs vel ir dzivs un nav pa daudz noskelejis parlade magazinu { Console.WriteLine("=Reload!!!="); System.Threading.Thread.Sleep(reload_time); } } } } public class Program { static void Main(string[] args) { // speletaju masivs Player[] speletaji = { new Player("player1",100,0), new Player("player2",100,0), }; // ierocu masivs Gun[] ieroci = { new Gun("Desert_eagle",53,7,3,2.2,267) ,new Gun("AK-47",35,30,3,2.4,600) ,new Gun("M4A4",33,30,4,3.1,666) ,new Gun("AWP",115,5,3,3.7,41) ,new Gun("SSG08",88,10,2,3.7,48) ,new Gun("glock_18",24,20,3,2.3,400) ,new Gun("USP-S",35,12,2,2.2,352) }; Console.WriteLine("=====CS:GO 2(console prototype)====="); Console.WriteLine("Sveiks, tas ir CS GO 2 spele konsolee, ja tu spele pirmo reizi izlasi noteikumus"); System.Threading.Thread.Sleep(5000); Console.Clear(); bool gamerun = true; while (gamerun) { Console.Clear(); Console.WriteLine("=====CS:GO 2(console prototype)====="); Console.WriteLine("1. Start Game"); Console.WriteLine("2. Read Rule"); Console.WriteLine("3. Exit"); int user_input = Convert.ToInt32(Console.ReadLine()); switch (user_input) { case 1: // pati spele speletaji[0].Point = 0; speletaji[1].Point = 0; while (speletaji[0].Point < 13 && speletaji[1].Point < 13) { speletaji[0].HP = 100; speletaji[1].HP = 100; Console.Clear(); Console.WriteLine("=====STATISTIKA====="); Console.WriteLine($" {speletaji[0].name}: {speletaji[0].Point} | {speletaji[1].name}: {speletaji[1].Point}"); System.Threading.Thread.Sleep(2000); Console.Clear(); Console.WriteLine($"==={speletaji[0].name} Izvelies ieroci kuru gribi izmantot ===\n"); for (int i = 0; i < ieroci.Length; i++) { Console.WriteLine($"{i}.{ieroci[i].name} "); } int gun_input = Convert.ToInt32(Console.ReadLine()); Console.Clear(); Console.WriteLine($"==={speletaji[1].name} Izvelies ieroci kuru gribi izmantot ===\n"); for (int i = 0; i < ieroci.Length; i++) { Console.WriteLine($"{i}.{ieroci[i].name} "); } int gun_input2 = Convert.ToInt32(Console.ReadLine()); Console.Clear(); Console.WriteLine($"====={speletaji[0].name} sak gajienu====="); ieroci[gun_input].GunAction(speletaji[1], speletaji[0]); Console.Clear(); if (speletaji[1].IsAlive()) { Console.WriteLine($"====={speletaji[1].name} sak gajienu====="); ieroci[gun_input2].GunAction(speletaji[0], speletaji[1]); } Console.Clear(); Console.WriteLine("=====Raunda Rezultati====="); Console.WriteLine($"===== {speletaji[0].name}: uzvaru skaits {speletaji[0].Point} ====="); Console.WriteLine($"===== {speletaji[1].name}: uzvaru skaits {speletaji[1].Point} ====="); Console.WriteLine("uzspiediet jebkuru taustinu lai turpinat"); Console.ReadKey(); } if (speletaji[0].Point >= 13) // ja speletajs 1 dabuj 13 punktus izvada to ko vins uzvareja { Console.WriteLine($"====={speletaji[0].name}:Uzvareja!!!====="); } else // cits gadijums jeb uzvareju cits speletajs { Console.WriteLine($"====={speletaji[1].name}:Uzvareja!!!====="); } System.Threading.Thread.Sleep(5000); break; case 2: // noteikumi Console.Clear(); Console.WriteLine("=====Noteikumi====="); Console.WriteLine("1. Spele ir interaktiva jums vajag ievadit 1 vai 2 no ta risinasies trapijat jus vai ne"); Console.WriteLine("2. Ja jus noskelejat vairak pa 3 reizem uzbrukumu sak pretinieks"); Console.WriteLine("3. Spele ilgs lidz tam bridim kamer viens no jums ne iegus 13 punktus"); Console.WriteLine("\nIevadiet jebko lai iziet!"); Console.ReadKey(); Console.Clear(); break; case 3: // izej ara no speles gamerun = false; break; } } } } }