//Kliknutí na tlačítko koupit private void dgvObchod_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 4) { var vecID = dgvObchod.Rows[e.RowIndex].Cells[0].Value; Věc zbozi = Svet.VecByID(Convert.ToInt32(vecID)); if (player.Zlato >= zbozi.Cena) { player.PridatDoInventare(zbozi); player.Zlato -= zbozi.Cena; AktualizaceInventare(); dgvInventar.Columns[4].Visible = true; player.poloha.Obchodnik.OdebratZInventare(zbozi); dgvObchod.Rows.Clear(); foreach (Inventar inventar in player.poloha.Obchodnik.Inventar) { if (inventar.Mnozstvi > 0) { dgvObchod.Rows.Add(new[] { inventar.VecID.ToString(), inventar.Detaily.Jmeno, inventar.Mnozstvi.ToString(), inventar.Detaily.Cena.ToString() }); } } } else { MessageBox.Show("Nemáš dostatek zlata ke koupi " + zbozi.Jmeno); } } }
public override void krok(Svet svet) { TypEntity[,] mapa = mapaViditelnosti(svet); Smer chteny_smer = Smer.Stuj; try { chteny_smer = chovani.pohyb(mapa, pozice); } catch (Exception e) { Console.WriteLine($"Hrac {znak} provedl neplatnou operaci: {e.ToString()}"); Thread.Sleep(1500); } Pozice nova_pozice = pozice.prictiSmer(chteny_smer); // zkontroluj, ze timto smerem muze houbar jit if (svet.entitaNaPozici(nova_pozice) == null) { pozice = nova_pozice; } // seber houbu else if (svet.entitaNaPozici(nova_pozice).typ == TypEntity.Houba) { Console.WriteLine($"Vyborne, hrac {znak} sebral houbu!"); Thread.Sleep(1500); svet.entity.Remove(svet.entitaNaPozici(nova_pozice)); pozice = nova_pozice; ++pocet_hub; } }
//Kliknutí na tlačítko prodat private void dgvInventar_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 4) { var vecID = dgvInventar.Rows[e.RowIndex].Cells[0].Value; Věc prodatVec = Svet.VecByID(Convert.ToInt32(vecID)); if (prodatVec.Cena == Svet.NEPRODEJNE_VECI) { MessageBox.Show("Nemůžeš prodat věc jménem: " + prodatVec.Jmeno); } else { player.poloha.Obchodnik.PridatDoInventare(prodatVec); player.OdebratZInventare(prodatVec); player.Zlato += prodatVec.Cena; AktualizaceInventare(); dgvInventar.Columns[4].Visible = true; dgvObchod.Rows.Clear(); foreach (Inventar inventar in player.poloha.Obchodnik.Inventar) { if (inventar.Mnozstvi > 0) { dgvObchod.Rows.Add(new[] { inventar.VecID.ToString(), inventar.Detaily.Jmeno, inventar.Mnozstvi.ToString(), inventar.Detaily.Cena.ToString() }); } } } } }
private void btnPouzitLektvar_Click(object sender, EventArgs e) { //Vypití lektvaru Lektvary lektvar = (Lektvary)cboLektvary.SelectedItem; player.Aktualzdravi = (player.Aktualzdravi + lektvar.Leceni); if (player.Aktualzdravi > player.Maxzdravi) { player.Aktualzdravi = player.Maxzdravi; } foreach (Inventar i in player.Inventar) { if (i.Detaily.ID == lektvar.ID) { i.Mnozstvi--; break; } } rtbZpravy.Text += "Vypil jsi " + lektvar.Jmeno + Environment.NewLine; ScrollDown(); //Útok příšery int ZB = Kostky.CisloMezi(0, bestie.Maxutok); rtbZpravy.Text += bestie.Jmeno + " ti způsobila zranění za " + ZB.ToString() + " bodů." + Environment.NewLine; ScrollDown(); player.Aktualzdravi -= ZB; //Smrt postavy if (player.Aktualzdravi <= 0) { rtbZpravy.Text += bestie.Jmeno + " tě zabil/a." + Environment.NewLine; ScrollDown(); dgvInventar.Rows.Clear(); player.Inventar.Clear(); player.PridatDoInventare(Svet.VecByID(Svet.VEC_ID_PALICE), 1); dgvUkoly.Rows.Clear(); Presun(Svet.MistoByID(Svet.MISTO_ID_CHATRC)); player.Maxzdravi = 10; player.Aktualzdravi = 10; player.Zlato = 20; player.Exp = 0; player.Uroven = 1; lblzivoty.Text = player.Aktualzdravi.ToString(); lblzlato.Text = player.Zlato.ToString(); lblexp.Text = player.Exp.ToString(); lbllev.Text = player.Uroven.ToString(); //Aktualizace počtu příšer Svet.MistoByID(Svet.MISTO_ID_HOSTINEC).NachaziSeZdePrisera.Pocet = Svet.MistoByID(Svet.MISTO_ID_HOSTINEC).NachaziSeZdePrisera.Vychozi; Svet.MistoByID(Svet.MISTO_ID_SKLEPENI).NachaziSeZdePrisera.Pocet = Svet.MistoByID(Svet.MISTO_ID_SKLEPENI).NachaziSeZdePrisera.Vychozi; } lblzivoty.Text = player.Aktualzdravi.ToString(); AktualizaceInventare(); AktualizaceLektvaru(); }
public Quest() { InitializeComponent(); //Vytvoření nového hráče se staty, přidání zbraně do inventáře a přesunutí do počáteční polohy player = new Player(10, 10, 20, 0, 1); player.PridatDoInventare(Svet.VecByID(Svet.VEC_ID_PALICE)); Presun(Svet.MistoByID(Svet.MISTO_ID_CHATRC)); //Popsání počtu životů, zlata, zkušeností a aktuální úroveň lblzivoty.Text = player.Aktualzdravi.ToString(); lblzlato.Text = player.Zlato.ToString(); lblexp.Text = player.Exp.ToString(); lbllev.Text = player.Uroven.ToString(); }
private TypEntity[,] mapaViditelnosti(Svet svet) { TypEntity[,] mapa = new TypEntity[svet.M, svet.N]; foreach (Entita e in svet.entity) { // stromy a plot jsou videt vsude, ostatni jen blizko if (e.typ == TypEntity.Strom || e.typ == TypEntity.Plot || (Math.Abs(e.pozice.i - pozice.i) <= viditelnost && Math.Abs(e.pozice.j - pozice.j) <= viditelnost)) { mapa[e.pozice.i, e.pozice.j] = e.typ; } } return(mapa); }
private void dgvMojeVeci_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 4) { var vecID = dgvMojeVeci.Rows[e.RowIndex].Cells[0].Value; Věc prodatVec = Svet.VecByID(Convert.ToInt32(vecID)); if (prodatVec.Cena == Svet.NEPRODEJNE_VECI) { MessageBox.Show("Nemůžeš prodat " + prodatVec.Jmeno); } else { _player.OdebratZInventare(prodatVec); _player.Zlato += prodatVec.Cena; quest.AktualizaceInventare(); } } }
static void Main(string[] args) { // vytvor nahodne hrace List <HoubarovoChovani> hraci = new List <HoubarovoChovani>(); hraci.Add(new NahodnyHrac()); hraci.Add(new HladovyHrac()); Svet s = new Svet(32, 32, hraci, 15, 25, 100); for (int i = 0; i < epoch; ++i) { Console.WriteLine($"Epocha {i}"); s.ukazMapu(); s.krok(); Thread.Sleep(100); Console.Clear(); } }
public override void krok(Svet svet) { // vyber nahodnou pristi pozici Smer s = (Smer)rnd.Next(6); Pozice nova_pozice = pozice.prictiSmer(s); if (svet.entitaNaPozici(nova_pozice) == null) { pozice = nova_pozice; } // sezer cloveka else if (svet.entitaNaPozici(nova_pozice).typ == TypEntity.Houbar) { Entita hrac = svet.entitaNaPozici(nova_pozice); Console.WriteLine($"Ale ne! Vlk si dal hrace {hrac.znak} ke svacine!"); Thread.Sleep(1500); svet.entity.Remove(hrac); pozice = nova_pozice; } }
private void dgvObchodnikovyVeci_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 3) { var vecID = dgvObchodnikovyVeci.Rows[e.RowIndex].Cells[0].Value; Věc zbozi = Svet.VecByID(Convert.ToInt32(vecID)); if (_player.Zlato >= zbozi.Cena) { _player.PridatDoInventare(zbozi); _player.Zlato -= zbozi.Cena; quest.AktualizaceInventare(); } else { MessageBox.Show("Nemáš dostatek zlata ke koupi " + zbozi.Jmeno); } } }
private void Presun(Místa noveMisto) { //Kontrola jestli má hráč přístup na dané místo if (!player.MaPozadovanyPredmet(noveMisto)) { rtbZpravy.Text += "Pro vstup do " + noveMisto.Jméno + "musíš mít " + noveMisto.JePotrebaPredmet.Jmeno + Environment.NewLine; return; ScrollDown(); } player.poloha = noveMisto; //Zviditelnění příslušných tlačítek pohybu btnSever.Visible = (noveMisto.NaSever != null); btnVychod.Visible = (noveMisto.NaVychod != null); btnJih.Visible = (noveMisto.NaJih != null); btnZapad.Visible = (noveMisto.NaZapad != null); rtbMisto.Text = noveMisto.Jméno + Environment.NewLine; rtbMisto.Text += noveMisto.Popis + Environment.NewLine; btnObchod.Visible = (noveMisto.Obchodnik != null); //Kontrola jestli je na aktuální poloze k dispozici nový úkol if (noveMisto.UkolJeKDispozici != null) { bool UkolZadan = player.MaTentoUkol(noveMisto.UkolJeKDispozici); bool UkolSplnen = player.UkolDokoncen(noveMisto.UkolJeKDispozici); //Kontrola, jestli byl úkol zadán nebo už i splněn foreach (Cechmistr ukol in player.Mise) { if (ukol.Detaily.ID == noveMisto.UkolJeKDispozici.ID) { UkolZadan = true; if (ukol.Dokoncen) { UkolSplnen = true; } } } if (UkolZadan) { if (!UkolSplnen) { bool hracMaVseKDispozici = player.MaVsechnyTrofeje(noveMisto.UkolJeKDispozici); //V případě, že má hráč všechny předměty potřebné k dokončení úkolu, tak se úkol dokončí a hráč získá odměny. if (hracMaVseKDispozici) { rtbZpravy.Text += Environment.NewLine; rtbZpravy.Text += "Dokončil jsi úkol: " + noveMisto.UkolJeKDispozici.Jmeno + Environment.NewLine; ScrollDown(); player.OdstranitTrofejeZInventare(noveMisto.UkolJeKDispozici); rtbZpravy.Text += "Získáváš: " + Environment.NewLine; rtbZpravy.Text += noveMisto.UkolJeKDispozici.Expy.ToString() + " zkušeností" + Environment.NewLine; rtbZpravy.Text += noveMisto.UkolJeKDispozici.Odmena.ToString() + " zlatých" + Environment.NewLine; rtbZpravy.Text += noveMisto.UkolJeKDispozici.Predmet.Jmeno + Environment.NewLine; rtbZpravy.Text += Environment.NewLine; ScrollDown(); player.Exp += noveMisto.UkolJeKDispozici.Expy; player.Zlato += noveMisto.UkolJeKDispozici.Odmena; player.PridatDoInventare(noveMisto.UkolJeKDispozici.Predmet); player.UkolBylDokoncen(noveMisto.UkolJeKDispozici); noveMisto.UkolJeKDispozici.Dokoncen = true; } } } //Zadání nového úkolu else { rtbZpravy.Text += "Byl zadán úkol: " + noveMisto.UkolJeKDispozici.Jmeno + Environment.NewLine; rtbZpravy.Text += noveMisto.UkolJeKDispozici.Popis + Environment.NewLine; rtbZpravy.Text += "K dokončení úkolu je třeba přinést:" + Environment.NewLine; ScrollDown(); //Vypsání toho, co hráč potřebuje k dokončení úkolu foreach (Trofej trof in noveMisto.UkolJeKDispozici.Trofej) { if (trof.Mnozstvi == 1) { rtbZpravy.Text += trof.Mnozstvi.ToString() + " " + trof.Detaily.Jmeno + Environment.NewLine; ScrollDown(); } else { rtbZpravy.Text += trof.Mnozstvi.ToString() + " " + trof.Detaily.Jmena + Environment.NewLine; ScrollDown(); } } //Pomocné předměty ke splnění úkolu foreach (Inventar pomoc in noveMisto.UkolJeKDispozici.Pomoc) { rtbZpravy.Text += "Dostal jsi:" + pomoc.Detaily.Jmeno + Environment.NewLine; player.PridatDoInventare(pomoc.Detaily); rtbZpravy.Text += Environment.NewLine; } //Přidání nového úkolu na seznam player.Mise.Add(new Cechmistr(noveMisto.UkolJeKDispozici)); } } //Kontrola příšer if (noveMisto.NachaziSeZdePrisera != null) { //Na místě ještě jsou nějaké příšery if (noveMisto.NachaziSeZdePrisera.Pocet > 0) { rtbZpravy.Text += "Vidíš " + noveMisto.NachaziSeZdePrisera.Jmeno + Environment.NewLine; Bestiář prisera = Svet.PriseraByID(noveMisto.NachaziSeZdePrisera.ID); bestie = new Bestiář(prisera.ID, prisera.Jmeno, prisera.Maxutok, prisera.Expy, prisera.Odmena, prisera.Aktualzdravi, prisera.Maxzdravi); foreach (Korist korist in prisera.Zisk) { bestie.Zisk.Add(korist); } //Přepnutí do bojového módu cboZbrane.Visible = true; cboLektvary.Visible = true; btnPouzitZbran.Visible = true; btnPouzitLektvar.Visible = true; lblUtok.Visible = true; } //Vypnutí bojového módu else { cboZbrane.Visible = false; cboLektvary.Visible = false; btnPouzitZbran.Visible = false; btnPouzitLektvar.Visible = false; lblUtok.Visible = false; } } //Nejsou příšery else { bestie = null; cboZbrane.Visible = false; cboLektvary.Visible = false; btnPouzitLektvar.Visible = false; btnPouzitZbran.Visible = false; lblUtok.Visible = false; } AktualizaceInventare(); AktualizaceUkolu(); AktualizaceZbrani(); AktualizaceLektvaru(); }
private void btnPouzitZbran_Click(object sender, EventArgs e) { Zbraně aktivniZbran = (Zbraně)cboZbrane.SelectedItem; //Útok hráče int ZZ = Kostky.CisloMezi(aktivniZbran.Minutok, aktivniZbran.Maxutok); bestie.Aktualzdravi -= ZZ; rtbZpravy.Text += "Zasáhl jsi " + bestie.Jmeno + " za " + ZZ.ToString() + " bodů." + Environment.NewLine; ScrollDown(); //Smrt příšery a získání odměn if (bestie.Aktualzdravi <= 0) { rtbZpravy.Text += Environment.NewLine; rtbZpravy.Text += "Porazil jsi " + bestie.Jmeno + Environment.NewLine; ScrollDown(); player.Exp += bestie.Expy; rtbZpravy.Text += "Získal jsi " + bestie.Expy.ToString() + " bodů zkušenosti." + Environment.NewLine; ScrollDown(); player.Zlato += bestie.Odmena; rtbZpravy.Text += "Získal jsi " + bestie.Odmena.ToString() + " zlata." + Environment.NewLine; ScrollDown(); List <Inventar> korist = new List <Inventar>(); foreach (Korist kor in bestie.Zisk) { if (Kostky.CisloMezi(1, 100) <= kor.Sance) { korist.Add(new Inventar(kor.Detaily, 1)); } } //Přidání odměn do inventáře foreach (Inventar invent in korist) { player.PridatDoInventare(invent.Detaily); if (invent.Mnozstvi == 1) { rtbZpravy.Text += "Získal jsi " + invent.Mnozstvi.ToString() + " " + invent.Detaily.Jmeno + Environment.NewLine; ScrollDown(); } else { rtbZpravy.Text += "Získal jsi " + invent.Mnozstvi.ToString() + " " + invent.Detaily.Jmena + Environment.NewLine; ScrollDown(); } } lblexp.Text = player.Exp.ToString(); AktualizaceInventare(); AktualizaceZbrani(); AktualizaceLektvaru(); rtbZpravy.Text += Environment.NewLine; ScrollDown(); //Přidání příšery pokud už na místě žádné nejsou, ale hráč ještě nemá požadovaný počet předmětů ke splnění úkolů player.poloha.NachaziSeZdePrisera.Pocet--; if (player.poloha.NachaziSeZdePrisera.Pocet == 0 && player.poloha.UkolJeKDispozici != null && player.poloha.UkolJeKDispozici.Dokoncen == false) { player.poloha.NachaziSeZdePrisera.Pocet++; } Presun(player.poloha); } //Útok příšery else { int ZB = Kostky.CisloMezi(0, bestie.Maxutok); rtbZpravy.Text += bestie.Jmeno + " ti způsobil/a zranění za " + ZB.ToString() + " bodů." + Environment.NewLine; ScrollDown(); player.Aktualzdravi -= ZB; lblzivoty.Text = player.Aktualzdravi.ToString(); //Smrt postavy if (player.Aktualzdravi <= 0) { rtbZpravy.Text += bestie.Jmeno + " tě zabil/a." + Environment.NewLine; ScrollDown(); //Vyčištění invetáře a přidání počáteční zbraně dgvInventar.Rows.Clear(); player.Inventar.Clear(); player.PridatDoInventare(Svet.VecByID(Svet.VEC_ID_PALICE), 1); //Vyčištění misí player.Mise.Clear(); dgvUkoly.Rows.Clear(); //Počáteční poloha Presun(Svet.MistoByID(Svet.MISTO_ID_CHATRC)); //Počáteční staty player.Maxzdravi = 10; player.Aktualzdravi = 10; player.Zlato = 20; player.Exp = 0; player.Uroven = 1; lblzivoty.Text = player.Aktualzdravi.ToString(); lblzlato.Text = player.Zlato.ToString(); lblexp.Text = player.Exp.ToString(); lbllev.Text = player.Uroven.ToString(); //Aktualizace počtu příšer Svet.MistoByID(Svet.MISTO_ID_HOSTINEC).NachaziSeZdePrisera.Pocet = Svet.MistoByID(Svet.MISTO_ID_HOSTINEC).NachaziSeZdePrisera.Vychozi; Svet.MistoByID(Svet.MISTO_ID_SKLEPENI).NachaziSeZdePrisera.Pocet = Svet.MistoByID(Svet.MISTO_ID_SKLEPENI).NachaziSeZdePrisera.Vychozi; } } }
public override void report(Svet svet) { Console.WriteLine($"Hrac {znak} ma {pocet_hub} hub."); }
public virtual void report(Svet svet) { }
public virtual void krok(Svet svet) { // zakladni funkce krok() nic nedela }