Forum » Programiranje » križci krožci c #
križci krožci c #
majster123 ::
Naredil sem igro križci krožci v c #. Problem je da moram narediti proti računalniku, a jaz sem naredil na 2 človeška igralca. Zdaj nevem kako bi naredil proti računalniku...
Koda:
Koda:
class Program { class KrizciKrozci { // deklaracija dvodimenzionalnega polja oziroma igralnega polja public int[,] polje = new int[3, 3]; // vsem vrednostim v polju dodelimo vrednost 0 public void izprazniTabelo() { // zanka za vrstice for (int i = 0; i < 3; i++) { // zanka za stolpce for (int j = 0; j < 3; j++) { // dodelimo vrednost 0 polje[i, j] = 0; } } } public void izrisiTabelo() { // premik kurzorja v novo vrstico Console.WriteLine(); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { // če je vrednost obeh indeksov enaka 1 izrišemo križec, če 2 krogec, če pa nič od tega pa nič if (polje[i, j] == 1) { Console.Write("X"); } else if (polje[i, j] == 2) { Console.Write("O"); } else { Console.Write("#"); } Console.Write(" "); // presledek med vrsticami } Console.WriteLine(); // kurzor v novo vrstico } Console.WriteLine(); // kurzor v novo vrstico } public void vpisi(bool NaVrstiJe) { int a; int b; repeat: // za goto zanko // v primeru da je na vrsti prvi igralec if(NaVrstiJe == true) { Console.WriteLine("Igralec 1: Vpiši koordinate:"); } else { Console.WriteLine("Igralec 2: Vpiši koordinate: "); // drugi igralec } a = int.Parse(Console.ReadLine()); b = a % 10; a = a / 10; // priredimo vrednost a-ja b-ju in vrednost b-ja a-ju if(a < 0 || a > 3 || b < 0 || b > 3) { Console.WriteLine("Napaka!"); goto repeat; // goto zanka } else { if(polje[(a-1), (b-1)] != 0) { Console.WriteLine("Vnesi koordinate!"); goto repeat; } } // na vrsti prvi igralec if(NaVrstiJe == true) { polje[(a - 1), (b - 1)] = 1; } // na vrsti drugi igralec else { polje[(a - 1), (b - 1)] = 2; } } public bool preveriZmagovalca(bool naVrstiJe) { int igralec; if(naVrstiJe == true) { igralec = 1; } else { igralec = 2; } for(int i = 0; i < 3; i++) { // ali se vrstice ujemajo if(polje[i, 0] == igralec && polje [i,1] == igralec && polje[i,2] == igralec ) { return false; } // ali se stolpci ujemajo if(polje[0,i] == igralec && polje[1,i] == igralec && polje [2,i] == igralec) { return false; } } // ali se vrednosti diagonalno ujemajo if(polje[0,0] == igralec && polje[1,1] == igralec && polje[2,2] == igralec) { return false; } if(polje[0,2] == igralec && polje[1,1] == igralec && polje[2,0] == igralec) { return false; } return true; } } static void Main(string[] args) { // deklaracija spremenljivk bool naVrstiJe = true; bool game = true; // inicializacija KrizciKrozci krizci = new KrizciKrozci(); krizci.izprazniTabelo(); // klic funkcije za izpraznitev tabele while(game == true) { krizci.vpisi(naVrstiJe); // klic funkcije za vpis vrednosti krizci.izrisiTabelo(); // klic funkcije za izris game = krizci.preveriZmagovalca(naVrstiJe); // klic funkcije, ki preveri zmagovalca if(naVrstiJe == true) { naVrstiJe = false; } else { naVrstiJe = true; // če je obratno je vrednost true } } if(naVrstiJe == true) { Console.Write("Drugi igralec:"); } else { Console.Write("Prvi igralec:"); } Console.WriteLine("Zmagali ste!"); Console.ReadLine(); } } }
- spremenilo: majster123 ()
Ciklamen ::
Zakaj ne uporabiš značk, ki so za to, da oblikuješ kodo na forumu.. Tole je pain in the ass za brat :)
- End of the Post ->
majster123 ::
Proučite pravila igre "Križci-krožci" (Tic-tac-toe) ter izdelajte program, ki bo igralcu omogočil igranje te igre proti računalniku.
Igra se na tabli dimenzije 3x3 polj. Igralec in računalnik izmenično podajata koordinati polja, kamor postavita naslednji križec ali krožec (računalnik naj pri svoji potezi naključno izbere eno izmed še praznih polj). Po vsaki potezi program posodobi (na novo izriše) igralno tablo. Ko eden izmed njiju doseže "tri v vrsto" (po vrsticah, stolpcih ali diagonalah) se izpiše zmagovalca. V primeru neodločenega izida se naj izpiše "Neodločen izid!".
Po koncu vsake igre vprašajte uporabnika, če želi igrati še eno igro. V primeru, da uporabnik želi končati z igranjem, naj se mu izpiše statistika doseženih zmag (število zmag uporabnika, število vseh odigranih iger ter procent uporabnikovih zmag). Igre z neodločenim izidom pri statistiki štejte zraven samo pri vseh odigranih igrah, pri zmagah pa ne.
Igra se na tabli dimenzije 3x3 polj. Igralec in računalnik izmenično podajata koordinati polja, kamor postavita naslednji križec ali krožec (računalnik naj pri svoji potezi naključno izbere eno izmed še praznih polj). Po vsaki potezi program posodobi (na novo izriše) igralno tablo. Ko eden izmed njiju doseže "tri v vrsto" (po vrsticah, stolpcih ali diagonalah) se izpiše zmagovalca. V primeru neodločenega izida se naj izpiše "Neodločen izid!".
Po koncu vsake igre vprašajte uporabnika, če želi igrati še eno igro. V primeru, da uporabnik želi končati z igranjem, naj se mu izpiše statistika doseženih zmag (število zmag uporabnika, število vseh odigranih iger ter procent uporabnikovih zmag). Igre z neodločenim izidom pri statistiki štejte zraven samo pri vseh odigranih igrah, pri zmagah pa ne.
stb ::
majster123 je izjavil:
(računalnik naj pri svoji potezi naključno izbere eno izmed še praznih polj)
Hja, neka huda pamet ni zahtevana
Računalnik naj pač na slepo strelja na prazna polja in vsakič preverja če je slučajno zmagal.
Tudi če ima računalnik že dva v vrsti in prazno tretje polje za postavitev tretjega v vrsto po striktni interpretaciji teh navodil ne sme pametno izbrati tega polja in končati igre, ampak mora izbrati naključno polje.
Če kljub jasnemu kršenju navodil vseeno hočeš nekaj pameti: Ta igra ima tako majhno število polj, da lahko računalnik vsakič preigra vse mogoče variante nadaljevanja igre in izbere najbolj optimalno (=takšno, kjer je verjetnost za njegovo zmago največja)
Zgodovina sprememb…
- spremenil: stb ()
galu ::
Tole sem delal pred slabim letom dni:
JSFiddle (CPU vs User), SRC (CPU vs User in CPU vs CPU).
Note: FF in IE nekej čarata s tranzicijami.
Mogoče bo komu kdaj prav prišlo ali pa mu bo morda celo zanimivo.
P.S.
Tic Tac Toe se da precej zlahka narediti "nezgubljiv": http://www.wikihow.com/Win-at-Tic-Tac-T...
JSFiddle (CPU vs User), SRC (CPU vs User in CPU vs CPU).
Note: FF in IE nekej čarata s tranzicijami.
Mogoče bo komu kdaj prav prišlo ali pa mu bo morda celo zanimivo.
P.S.
Tic Tac Toe se da precej zlahka narediti "nezgubljiv": http://www.wikihow.com/Win-at-Tic-Tac-T...
Tako to gre.
roko granata ::
http://www.ntu.edu.sg/home/ehchua/progr...
na tej strani boš našel case study za igrico tic tac toe (križci krožci). Sicer napisan v javi, a ker potrbuješ le flow programa, si lahko brez težav pomagaš s tem primerom - Java in C# sta si po sintaksi izredno podobna.
Če pa si lahko dovolim pokomentirati še tvoj pristop - na nobeni strani, ki si jo lahko zamisliš (stack overflow ipd.), ti ne bo nihče dal odgovora, ki ga iščeč. Torej napisano kodo s tvojimi spremenljivkami in tvojim frameworkom. Ljudje to razumejo kot lenobo, kar resnici na ljubo tudi je. Če zares razumeš (ne da si le prepisoval kodo), kar je napisano, ti implenetacija enostavnega (in res je enostaven glede na navodila) AI-ja za potrebe igre križcev in krožcev ne bi smela predstavljati problema :/
na tej strani boš našel case study za igrico tic tac toe (križci krožci). Sicer napisan v javi, a ker potrbuješ le flow programa, si lahko brez težav pomagaš s tem primerom - Java in C# sta si po sintaksi izredno podobna.
Če pa si lahko dovolim pokomentirati še tvoj pristop - na nobeni strani, ki si jo lahko zamisliš (stack overflow ipd.), ti ne bo nihče dal odgovora, ki ga iščeč. Torej napisano kodo s tvojimi spremenljivkami in tvojim frameworkom. Ljudje to razumejo kot lenobo, kar resnici na ljubo tudi je. Če zares razumeš (ne da si le prepisoval kodo), kar je napisano, ti implenetacija enostavnega (in res je enostaven glede na navodila) AI-ja za potrebe igre križcev in krožcev ne bi smela predstavljati problema :/
Zgodovina sprememb…
- spremenil: roko granata ()
Yacked2 ::
Rabiš char array 9tih polj, kamor boš shranjeval trenutno stanje, če se bo na določeno polje vsedel CPU na to polje shraniš črko C, če je uporabnik pa U, če je polje prazno pusti prazno. Rabiš funkcijo check, ki preveri array in 0 ali 1, odvisno od tega a je nekdo zmagal(to naredi tako, da prečekira polja v arrayu podolgem in počez),če vrne zmagovalca se igra ustavi, potem rabiš funkcijo CPUPlay, ki pogleda katera polja so še prazna in naključno se vsede na enga. Nato pa še funkcija UserPlay, ki pogleda katera polja so prazna, nato pa uporabnik izbere ustreznega. Aja za konec pa še funkcija izpis, ki izpiše array v ustreznem formatu, verjetno 3x3, nato pa v mainu lepo po vrsti kličeš funkcije v while zanki:
bool zmaga = False; char[] polja = new char[9]; while(!zmaga) { CPUPlay(polja); Izpis(polja); char a = check(polja); if(a == '0') { UserPlay(polja); Izpis(polja); char b = check(polja); if(b !=0) { Console.WriteLine("Zmagovalec je uporabnik"); zmaga = True; } } else { Console.WriteLine("Zmagovalec je CPU"); zmaga = True; } }
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Zgodovina sprememb…
- spremenil: Yacked2 ()
nevone ::
N
Povsem preprosto. Vnos koordinat za drugega igralca, nadmesti z določanjem random koordinat (Povej, če ne veš kako se to naredi). To je vse. Nikjer v nalogi ne piše, kako pameten mora biti računalnik, proti kateremu igraš.
o+ nevone
aredil sem igro križci krožci v c #. Problem je da moram narediti proti računalniku, a jaz sem naredil na 2 človeška igralca. Zdaj nevem kako bi naredil proti računalniku...
Povsem preprosto. Vnos koordinat za drugega igralca, nadmesti z določanjem random koordinat (Povej, če ne veš kako se to naredi). To je vse. Nikjer v nalogi ne piše, kako pameten mora biti računalnik, proti kateremu igraš.
o+ nevone
Either we will eat the Space or Space will eat us.
Yacked2 ::
Evo narejeno:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _3x3 { class Program { static void Main(string[] args) { bool zmaga = false; char[] polja = new char[9]; //char[] dump = CPUPlay(polja); while (!zmaga) { polja = CPUPlay(polja); zmaga = check(polja,'C'); izpis(polja); if (zmaga == false) { polja = UserPlay(polja); zmaga = check(polja, 'U'); izpis(polja); if (zmaga == true) { Console.WriteLine("Zmagali ste!"); } } else { Console.WriteLine("Zmagal je racunalnik"); } } Console.ReadLine(); } private static char[] CPUPlay(char[] polja) { List<int> free = new List<int>(); for(int i=0;i<polja.Length;i++) { if(polja[i] == default(char) || polja[i] != 'U' || polja[i] != 'C') { free.Add(i); } } Random rnd = new Random(); int choosen = rnd.Next(0, free.Count-1); polja[choosen] = 'C'; return polja; } private static char[] UserPlay(char[] polja) { List<int> free = new List<int>(); for (int i = 0; i < polja.Length; i++) { if (polja[i] == default(char)) { free.Add(i); } } Console.WriteLine(string.Join(",",free)); while(true) { int a = Int32.Parse(Console.ReadLine()); if (free.Contains(a)) { polja[a] = 'U'; break; } } return polja; } private static bool check(char[] polja, char igralec) { if (polja[0] == igralec && polja[1] == igralec && polja[2] == igralec) { return true; } if (polja[3] == igralec && polja[4] == igralec && polja[5] == igralec) { return true; } if (polja[6] == igralec && polja[7] == igralec && polja[8] == igralec) { return true; } if (polja[0] == igralec && polja[3] == igralec && polja[6] == igralec) { return true; } if (polja[1] == igralec && polja[4] == igralec && polja[7] == igralec) { return true; } if (polja[2] == igralec && polja[5] == igralec && polja[8] == igralec) { return true; } if (polja[0] == igralec && polja[4] == igralec && polja[8] == igralec) { return true; } if (polja[2] == igralec && polja[4] == igralec && polja[6] == igralec) { return true; } return false; } private static void izpis(char[] polja) { char[] backup = new char[9]; Array.Copy(polja, backup, 9); for (int i = 0; i < backup.Length; i++) { if (backup[i] == default(char)) { backup[i] = 'X'; } } for (int i = 1; i <= backup.Length; i++) { if (i % 3 == 0) { Console.Write(backup[i - 1]); Console.WriteLine(); } else { Console.Write(backup[i - 1]); } } Console.WriteLine(); } } }
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Yacked2 ::
Malo bolj pametna izbira CPUja:
Najprej pogleda ali lahko zmaga, če ne more, pogleda ali ti lahko prepreči zmago, drugače izbira naključno.
private static char[] CPUPlay(char[] polja) { List<int> free = new List<int>(); for(int i=0;i<polja.Length;i++) { if(polja[i] == default(char) && (polja[i] != 'U' || polja[i] != 'C')) { free.Add(i); } } //izbira napada for(int i=0; i < free.Count;i++) { char[] backup = new char[9]; Array.Copy(polja, backup, 9); backup[free.ElementAt(i)] = 'C'; bool preveri = check(backup,'C'); if (preveri) { return backup; } } //izbira obrambe for (int i = 0; i < free.Count; i++) { char[] backup = new char[9]; Array.Copy(polja, backup, 9); backup[free.ElementAt(i)] = 'U'; bool preveri = check(backup, 'U'); if (preveri) { backup[free.ElementAt(i)] = 'C'; return backup; } } Random rnd = new Random(); int choosen = rnd.Next(0, free.Count-1); polja[free.ElementAt(choosen)] = 'C'; return polja; }
Najprej pogleda ali lahko zmaga, če ne more, pogleda ali ti lahko prepreči zmago, drugače izbira naključno.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
majster123 ::
zanima me še sledeče... ker nesmemo uporabljat kompleksnih metod .NET-a, bi rad vedel kako se implementirata array.copy pa string.join ? :)
Yacked2 ::
majster123 je izjavil:
zanima me še sledeče... ker nesmemo uporabljat kompleksnih metod .NET-a, bi rad vedel kako se implementirata array.copy pa string.join ? :)
z zanko se sprehodi čez cel array in z posameznimi elementi delaj kar hočeš (sestavljaj string, oz sestavljaj nov array)
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Zgodovina sprememb…
- spremenil: Yacked2 ()
majster123 ::
ok polja mi je uspelo kopirat sam z nizi mi pa ni uspelo.. :)
hočem list pretvorit v niz znakov :D
hočem list pretvorit v niz znakov :D
Zgodovina sprememb…
- spremenilo: majster123 ()
Vesoljc ::
kaksna je razlika med poljem in nizem?
Abnormal behavior of abnormal brain makes me normal...
majster123 ::
namesto tak: Console.WriteLine(string.Join(",", list)); sem probal tak:
for (int i = 0; i < array.Length; i++)
{
string s = "," + list;
Console.WriteLine(s);
}
for (int i = 0; i < array.Length; i++)
{
string s = "," + list;
Console.WriteLine(s);
}
stb ::
majster123 je izjavil:
namesto tak: Console.WriteLine(string.Join(",", list)); sem probal tak:
for (int i = 0; i < array.Length; i++)
{
string s = "," + list;
Console.WriteLine(s);
}
for (int i = 0; i < list.Length; i++)
{
string s = "," + list[i];
Console.WriteLine(s);
}
Ali je bolj eleganten foreach tudi prepovedan?
pa znebiti se boš hotel odvečne vodilne vejice v izpisu.
Yacked2 ::
majster123 je izjavil:
namesto tak: Console.WriteLine(string.Join(",", list)); sem probal tak:
for (int i = 0; i < array.Length; i++)
{
string s = "," + list;
Console.WriteLine(s);
}
for (int i = 0; i < list.Length; i++)
{
string s = "," + list[i];
Console.WriteLine(s);
}
Ali je bolj eleganten foreach tudi prepovedan?
pa znebiti se boš hotel odvečne vodilne vejice v izpisu.
Za vejico lahko narediš znotraj for zanke en if stavek, ki preveri če je i=0 potem jo izpisti, drugače pa jo dodaja.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Janac ::
Eno vprašanje, ki se ne navezuje na temo ampak tudi ni vredno za novo temo.
Torej v Cju v šoli programiramo od marca. Letos, v novem letniku smo septembra dobili 50 nalog iz C-ja, rešil sem vse naloge popolnoma sam z ramišljanjem, in ne nekateri moji sošolci, ki vse naloge prepisali. Že takrat sem po dvema tednoma POPOLNOMA pozabil vse strukture, novembra smo dobili tudi 50 nalog, sem se ponovno naučil(imel sem občutek da se učim prvič), sem se naučil, ampak zgodba ostaja enaka. Po dveh tednih, treh se težko spomnim da moram importat include stdio.h knjižnico...je to normalno? nalog nisem ršeil v enem tednu ampak vedno vsaj 2 tedna...nasplošno imam zelo slab spomin, sploh v zadnjih 2-3letih.
Povejte mi vaše izkušnje...lepo prosim.
Torej v Cju v šoli programiramo od marca. Letos, v novem letniku smo septembra dobili 50 nalog iz C-ja, rešil sem vse naloge popolnoma sam z ramišljanjem, in ne nekateri moji sošolci, ki vse naloge prepisali. Že takrat sem po dvema tednoma POPOLNOMA pozabil vse strukture, novembra smo dobili tudi 50 nalog, sem se ponovno naučil(imel sem občutek da se učim prvič), sem se naučil, ampak zgodba ostaja enaka. Po dveh tednih, treh se težko spomnim da moram importat include stdio.h knjižnico...je to normalno? nalog nisem ršeil v enem tednu ampak vedno vsaj 2 tedna...nasplošno imam zelo slab spomin, sploh v zadnjih 2-3letih.
Povejte mi vaše izkušnje...lepo prosim.
amacar ::
Eno vprašanje, ki se ne navezuje na temo ampak tudi ni vredno za novo temo.
Torej v Cju v šoli programiramo od marca. Letos, v novem letniku smo septembra dobili 50 nalog iz C-ja, rešil sem vse naloge popolnoma sam z ramišljanjem, in ne nekateri moji sošolci, ki vse naloge prepisali. Že takrat sem po dvema tednoma POPOLNOMA pozabil vse strukture, novembra smo dobili tudi 50 nalog, sem se ponovno naučil(imel sem občutek da se učim prvič), sem se naučil, ampak zgodba ostaja enaka. Po dveh tednih, treh se težko spomnim da moram importat include stdio.h knjižnico...je to normalno? nalog nisem ršeil v enem tednu ampak vedno vsaj 2 tedna...nasplošno imam zelo slab spomin, sploh v zadnjih 2-3letih.
Povejte mi vaše izkušnje...lepo prosim.
Glede na to, kakše "rešitve" si lepil je bolj izgledalo kot da si jih rešil s poskušanjem ne pa razmišljanjem.
Sicer pa glede includov pa takih for, js tud že 5 let programiram, pa vsakič skopiram kodo z neta za openfiledialog ali pa include, ker itak ne rabiš vedet na pamet.
Yacked2 ::
Eno vprašanje, ki se ne navezuje na temo ampak tudi ni vredno za novo temo.
Torej v Cju v šoli programiramo od marca. Letos, v novem letniku smo septembra dobili 50 nalog iz C-ja, rešil sem vse naloge popolnoma sam z ramišljanjem, in ne nekateri moji sošolci, ki vse naloge prepisali. Že takrat sem po dvema tednoma POPOLNOMA pozabil vse strukture, novembra smo dobili tudi 50 nalog, sem se ponovno naučil(imel sem občutek da se učim prvič), sem se naučil, ampak zgodba ostaja enaka. Po dveh tednih, treh se težko spomnim da moram importat include stdio.h knjižnico...je to normalno? nalog nisem ršeil v enem tednu ampak vedno vsaj 2 tedna...nasplošno imam zelo slab spomin, sploh v zadnjih 2-3letih.
Povejte mi vaše izkušnje...lepo prosim.
Objavi naloge pa ti jih lahko rešim, samo ne v Cje ker ga neznam. Lahko pa c#, java, php, python itd..
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Janac ::
Eno vprašanje, ki se ne navezuje na temo ampak tudi ni vredno za novo temo.
Torej v Cju v šoli programiramo od marca. Letos, v novem letniku smo septembra dobili 50 nalog iz C-ja, rešil sem vse naloge popolnoma sam z ramišljanjem, in ne nekateri moji sošolci, ki vse naloge prepisali. Že takrat sem po dvema tednoma POPOLNOMA pozabil vse strukture, novembra smo dobili tudi 50 nalog, sem se ponovno naučil(imel sem občutek da se učim prvič), sem se naučil, ampak zgodba ostaja enaka. Po dveh tednih, treh se težko spomnim da moram importat include stdio.h knjižnico...je to normalno? nalog nisem ršeil v enem tednu ampak vedno vsaj 2 tedna...nasplošno imam zelo slab spomin, sploh v zadnjih 2-3letih.
Povejte mi vaše izkušnje...lepo prosim.
Objavi naloge pa ti jih lahko rešim, samo ne v Cje ker ga neznam. Lahko pa c#, java, php, python itd..
Nisi razumel napisanega...vseeno hvala.
Yacked2 ::
Eno vprašanje, ki se ne navezuje na temo ampak tudi ni vredno za novo temo.
Torej v Cju v šoli programiramo od marca. Letos, v novem letniku smo septembra dobili 50 nalog iz C-ja, rešil sem vse naloge popolnoma sam z ramišljanjem, in ne nekateri moji sošolci, ki vse naloge prepisali. Že takrat sem po dvema tednoma POPOLNOMA pozabil vse strukture, novembra smo dobili tudi 50 nalog, sem se ponovno naučil(imel sem občutek da se učim prvič), sem se naučil, ampak zgodba ostaja enaka. Po dveh tednih, treh se težko spomnim da moram importat include stdio.h knjižnico...je to normalno? nalog nisem ršeil v enem tednu ampak vedno vsaj 2 tedna...nasplošno imam zelo slab spomin, sploh v zadnjih 2-3letih.
Povejte mi vaše izkušnje...lepo prosim.
Objavi naloge pa ti jih lahko rešim, samo ne v Cje ker ga neznam. Lahko pa c#, java, php, python itd..
Nisi razumel napisanega...vseeno hvala.
Pravim, da za rešitev naloge ne rabiš poznat Cja oz. katerikoli drugega programskega jezika. Preprosto razbij problem na manjše kose, nato pa rabiš samo še poiskati sintakso. Kak primer naloge prosim.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
RatedR ::
Po dveh tednih, treh se težko spomnim da moram importat include stdio.h knjižnico...je to normalno? nalog nisem ršeil v enem tednu ampak vedno vsaj 2 tedna...nasplošno imam zelo slab spomin, sploh v zadnjih 2-3letih.
Tud sam sem začetnik, samo da pa neveš kaj naredit v prvi vrstici programa, importat knjižnico iz katere izhajajo ukazi ki jih boš uporabil se mi pa ne zdi preveč normalno.
Večina odgovorov tukaj bo z bolj strokovnega vidika, kot npr.:
js tud že 5 let programiram, pa vsakič skopiram kodo z neta za openfiledialog ali pa include, ker itak ne rabiš vedet na pamet.
Pač človek govori iz izkušenj, samo zdele ko pa še ne rabite več kot 3 knjižnice, bi si pa že moral zapomnit.
Kako pa pridobivate ocene pri tem predmetu iz programiranja? Pomembno je namreč ker če ste na računalnikih, zase govorim, si lažje zapomnim oz. ko daš prste na tipkovnico ti že nekako avtomatsko dela, kaj napisat itd.
garamond ::
Mislim da lahko IDE zelo pomaga s samodejnim dokončevanjem. Če začneš tipkati “pri…” bi moral ponuditi opcijo “printf”, če tega ni pač veš, da nisi vključil primernih knjižnic.
Lahko pa da v procesu učenja programiranja uporabljajo Notepad in se učijo natančnosti na vsak znak natančno ;-)
Lahko pa da v procesu učenja programiranja uporabljajo Notepad in se učijo natančnosti na vsak znak natančno ;-)
garamond ::
Potem odpadejo take majhne fore, ki bi jih lahko komu podtaknil :-(
MT: Replace a semicolon (;) with a greek question mark (;) in your friend's C# code and watch them pull their hair out over the syntax error
— Peter Ritchie (@peterritchie) November 16, 2014
RatedR ::
Yacked2, ugibam da maš že faks narejen in da že nekje delaš, sodeč po tvojem znanju, samo zanima me kateri faks imaš narejen pa v kakšni vrsti podjetja delaš?
Zanima me namreč, kako se uvrščajo programerji glede na njihovo znanje, vidim da znaš kar dost jezikov pa a toliko zadošča delodajalcem?
Pa še za tele križce pa krožce, na stopnji 1-10, kakšna je zahtevnost tega programa?
Lp
Zanima me namreč, kako se uvrščajo programerji glede na njihovo znanje, vidim da znaš kar dost jezikov pa a toliko zadošča delodajalcem?
Pa še za tele križce pa krožce, na stopnji 1-10, kakšna je zahtevnost tega programa?
Lp
Yacked2 ::
Yacked2, ugibam da maš že faks narejen in da že nekje delaš, sodeč po tvojem znanju, samo zanima me kateri faks imaš narejen pa v kakšni vrsti podjetja delaš?
Zanima me namreč, kako se uvrščajo programerji glede na njihovo znanje, vidim da znaš kar dost jezikov pa a toliko zadošča delodajalcem?
Pa še za tele križce pa krožce, na stopnji 1-10, kakšna je zahtevnost tega programa?
Lp
Slabo ugibaš, junija imam maturo :)
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
amacar ::
Yacked2, ugibam da maš že faks narejen in da že nekje delaš, sodeč po tvojem znanju, samo zanima me kateri faks imaš narejen pa v kakšni vrsti podjetja delaš?
Zanima me namreč, kako se uvrščajo programerji glede na njihovo znanje, vidim da znaš kar dost jezikov pa a toliko zadošča delodajalcem?
Pa še za tele križce pa krožce, na stopnji 1-10, kakšna je zahtevnost tega programa?
Lp
Križce-krožce moraš znati napisati cca 3-6 mesecev po začetku učenja (začetek je mišljen kot res začetek, torej helloword program). Takšne so nekje zahteve na FERI 1. letnik.
RatedR ::
Slabo ugibaš, junija imam maturo :)
Maturo pa že znaš c#, java, php, python?
Ja od kje ti vse to, mi "programiramo" že 6-7 mesecev (vključno z lanskim letom) pa smo komaj prišli do pointerjev...
A so tudi vsi ostali v tvojem letniku tako na tekočem kot ti?
Križce-krožce moraš znati napisati cca 3-6 mesecev po začetku učenja (začetek je mišljen kot res začetek, torej helloword program). Takšne so nekje zahteve na FERI 1. letnik.
Zanimivo, kot sem napisal zgoraj...po 6-7 mesecih smo šele pri pointerjih in me malo skrbi kaj bo v prihodnjih letih
Zgodovina sprememb…
- spremenilo: RatedR ()
amacar ::
Slabo ugibaš, junija imam maturo :)
Maturo pa že znaš c#, java, php, python?
Ja od kje ti vse to, mi "programiramo" že 6-7 mesecev (vključno z lanskim letom) pa smo komaj prišli do pointerjev...
A so tudi vsi ostali v tvojem letniku tako na tekočem kot ti?
Ko znaš en jezik znaš "vse". Logika je večina pri programiranju.
Križce-krožce moraš znati napisati cca 3-6 mesecev po začetku učenja (začetek je mišljen kot res začetek, torej helloword program). Takšne so nekje zahteve na FERI 1. letnik.
Zanimivo, kot sem napisal zgoraj...po 6-7 mesecih smo šele pri pointerjih in me malo skrbi kaj bo v prihodnjih letih
Ja verjetno si srednja šola, kjer greste počasi, da bi ja razumeli in vsi naredili letnik. Na faksu te pa na začetku "posilijo" z vsem možnim in tisti, ki so vztrajni ter jih zanima, gredo v naslednji letnik, ostali pa padejo.
Yacked2 ::
Slabo ugibaš, junija imam maturo :)
Maturo pa že znaš c#, java, php, python?
Ja od kje ti vse to, mi "programiramo" že 6-7 mesecev (vključno z lanskim letom) pa smo komaj prišli do pointerjev...
A so tudi vsi ostali v tvojem letniku tako na tekočem kot ti?
Križce-krožce moraš znati napisati cca 3-6 mesecev po začetku učenja (začetek je mišljen kot res začetek, torej helloword program). Takšne so nekje zahteve na FERI 1. letnik.
Zanimivo, kot sem napisal zgoraj...po 6-7 mesecih smo šele pri pointerjih in me malo skrbi kaj bo v prihodnjih letih
Hodim na gimnazijo, edini v razredu programiram. Ti programiraš 7 mesecev, jaz pa 7 let :)
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Yacked2 ::
Evo tole je pa ultimatna verzija robota:
http://pastebin.com/h48mxiY4
če vam ga rata premagati sporocite.
http://pastebin.com/h48mxiY4
če vam ga rata premagati sporocite.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Yacked2 ::
mas en bug :
Bo treba popravit, nekega dne :P
Pred randomom moram še preveriti če je kot.Count == 1, da izbere polja[free[kot[0]]] = 'C';
Popravljeno, hwala epicVoid :)
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Zgodovina sprememb…
- spremenil: Yacked2 ()
Yacked2 ::
Evo sem še malo popravil algoritem za obrambo, sedaj preverja če je v nevarnosti za dvojni napad po diagonali.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Yacked2 ::
Probaj minimax / alfabeta implementirati kot AI.
Ma itak brezveze, ker v primeru, da oba (CPU in uporabnik) igrata brez napak nihče ne mora zmagati.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Spura ::
Main funkcija ima dvakrat prakticno isto kodo glede na to kdo zacne, ni potrebe.
Funckija check ima kopico if stavkov, ne rabi nobenega if stavka, ker if pogoji so bool vrednosti in funkcija vraca bool vrednost.
Povsod se kopira game board brez neke blazne potrebe, sploh pa pri izpisu. Naredis kopijo zato da X gor postavis, ampak saj lahko preprosto pri izpisu X izpisujes za prazna polja.
Funkcija za potezo racunalnika bi bila bolj primerno taka, ki bi vrnila potezo racunalnika, ne pa game board s postavljeno potezo.
Funckija check ima kopico if stavkov, ne rabi nobenega if stavka, ker if pogoji so bool vrednosti in funkcija vraca bool vrednost.
Povsod se kopira game board brez neke blazne potrebe, sploh pa pri izpisu. Naredis kopijo zato da X gor postavis, ampak saj lahko preprosto pri izpisu X izpisujes za prazna polja.
Funkcija za potezo racunalnika bi bila bolj primerno taka, ki bi vrnila potezo racunalnika, ne pa game board s postavljeno potezo.
Yacked2 ::
Main funkcija ima dvakrat prakticno isto kodo glede na to kdo zacne, ni potrebe.
Funckija check ima kopico if stavkov, ne rabi nobenega if stavka, ker if pogoji so bool vrednosti in funkcija vraca bool vrednost.
Povsod se kopira game board brez neke blazne potrebe, sploh pa pri izpisu. Naredis kopijo zato da X gor postavis, ampak saj lahko preprosto pri izpisu X izpisujes za prazna polja.
Funkcija za potezo racunalnika bi bila bolj primerno taka, ki bi vrnila potezo racunalnika, ne pa game board s postavljeno potezo.
Malo bolj razloži:
-main: ok, lahko bi naredil s par if stavkov, namesto copy/paste kode
-check funkcija: kako naj popravim,
-kopira se zato, da zaščiti poseganje v samo postavitev. Edino pri izpisu bi lahko rešil drugače.
-Zakaj bi bila funkcija bolj primerna če bi vrnila samo potezo ?
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
amacar ::
Spura ::
Yacked2 ::
Probaj minimax / alfabeta implementirati kot AI.
Ma itak brezveze, ker v primeru, da oba (CPU in uporabnik) igrata brez napak nihče ne mora zmagati.
Najprej si spisal 300 vrstic preverjanja za najboljšo rešitev, potem pa praviš, da je brezveze
Kaj pa naj drugega dela človek med informatiko.
@spura: mja lahko bi naredil tako ja.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
majster123 ::
ok kako bi naredil še, da ti po vsaki zmagi naredi novo igro in ti šteje zmage tebi in računalniku in ti izpiše tudi procentualno? pa to še... Igre z neodločenim izidom pri statistiki štejte zraven samo pri vseh odigranih igrah, pri zmagah pa ne. HVALA:)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Domača naloga - osnoveOddelek: Programiranje | 2509 (1726) | 11tomi12 |
» | [C#] Input string was not in a correct format.Oddelek: Programiranje | 1092 (1029) | Cvenemir |
» | [C#] Reševanje domačih nalogOddelek: Programiranje | 3283 (2787) | krastača |
⊘ | [C#]polje znakovOddelek: Programiranje | 2385 (2213) | Ziga Dolhar |
» | Pomoč pri programčkihOddelek: Programiranje | 2943 (2593) | Mitja Bonča |