maximilian
user
- 26 март 2008
- 1.064
- 74
Значи, на средината на семестаров започнав едно проектче, но заради обврските на факултетот го баталив и го немам чепнато од тогаш, па сакав да чујам идеи околу ова. Значи, почнав да пишувам програма за игра шах, но само со 2 играчи, не компјутерот да развива стратегии. Е сеа, заради тоа шо имав малце познавања од можностите на С++ почнав да го правам само со функции и матрици. Прво да ви објаснам како ми е замислата:
Знали, шах таблата е една матрица од тип 8 х 8, и секое поле си е означено како шо треба (А,В,...,Н ; 1,2,...8). Секое празно поле на шахот има вредност 0 (т.е. тоа е поле на матрицата). Фигурите ги имаат следните вредности на матрицата: белите/црните пиони-1/11, белите/црните топови-2/12, белите/црните коњи-3/13, белите/црните ловци-4/14, белата/црната кралица-5/15, белиот/црниот крал-6/16. Се воведува поле, (А,В,...,Н ; 1,2,...8), т.е. се маркира фигурата со која сакате да играте. Доколку тоа поле на матрицата има вредност различна од 0, продолжувате. Значи, селектирате каде сака да оди. И се мести. Сега за сега, направив да бидат подвижни само пионите, и пак не ми се целосно доработени. Секоја фигура си има дефиниција каде може да се движи. Ова ми е всушност продолжение од едно домашно, каде за воведено поле, и воведена фигура програмата кажува каде е можно да се движи фигурата. Значи, замислата за можните комбинации ми е, на секое поле a[j]каде што може да се движи фигурата, се додава вредност a[j]+20. Се даваат условите каде да се додаде вредност a[j]+20. Од кога ќе се избери каде да се движи, програмата проверува дали полето има вредност >20. Ако има, на првичното поле се става вредност 0,а за сите останати има проверка ако се >20, се пражи a[j]-20, а на второто избрано поле се додава вредноста на првото избрано поле. Е сеа, има функции player1 и player2, но за да се менуваат наизменично, цело време се повикуваат рекурсивно, што не е добро решение,т.е. колку повеќе играш, толку повеќе меморија се трупа. Имав и на друго место истиот услов со +20, само наместо тоа, додадов вредност 41, и си одат истите проверки. Кодов не ми е ни 20% готов, ама чисто ако сакате видете го и кажете ми мислење околу ова, мислам дека би можело да се најде пооптимално решение, зашто стварно сакам да го направам кога ќе имам време (нека поминат испитиве :lut2
.
Заради тоа шо ова за мене е малце и комплицирано и најтешко нешто на кое сум се нафатил до сега да го правам, извинете ако сум направил некаков пропуст, не сум дообјаснил нешто, и сл работи, битно ми е, дали мислете дека има друго решение за проблемов, т.е. да се реши на друг начин. За вака знам да го доправам, но ќе ми одземе многу време, а мислам дека решениево не е најоптималното.
Знали, шах таблата е една матрица од тип 8 х 8, и секое поле си е означено како шо треба (А,В,...,Н ; 1,2,...8). Секое празно поле на шахот има вредност 0 (т.е. тоа е поле на матрицата). Фигурите ги имаат следните вредности на матрицата: белите/црните пиони-1/11, белите/црните топови-2/12, белите/црните коњи-3/13, белите/црните ловци-4/14, белата/црната кралица-5/15, белиот/црниот крал-6/16. Се воведува поле, (А,В,...,Н ; 1,2,...8), т.е. се маркира фигурата со која сакате да играте. Доколку тоа поле на матрицата има вредност различна од 0, продолжувате. Значи, селектирате каде сака да оди. И се мести. Сега за сега, направив да бидат подвижни само пионите, и пак не ми се целосно доработени. Секоја фигура си има дефиниција каде може да се движи. Ова ми е всушност продолжение од едно домашно, каде за воведено поле, и воведена фигура програмата кажува каде е можно да се движи фигурата. Значи, замислата за можните комбинации ми е, на секое поле a[j]каде што може да се движи фигурата, се додава вредност a[j]+20. Се даваат условите каде да се додаде вредност a[j]+20. Од кога ќе се избери каде да се движи, програмата проверува дали полето има вредност >20. Ако има, на првичното поле се става вредност 0,а за сите останати има проверка ако се >20, се пражи a[j]-20, а на второто избрано поле се додава вредноста на првото избрано поле. Е сеа, има функции player1 и player2, но за да се менуваат наизменично, цело време се повикуваат рекурсивно, што не е добро решение,т.е. колку повеќе играш, толку повеќе меморија се трупа. Имав и на друго место истиот услов со +20, само наместо тоа, додадов вредност 41, и си одат истите проверки. Кодов не ми е ни 20% готов, ама чисто ако сакате видете го и кажете ми мислење околу ова, мислам дека би можело да се најде пооптимално решение, зашто стварно сакам да го направам кога ќе имам време (нека поминат испитиве :lut2
Заради тоа шо ова за мене е малце и комплицирано и најтешко нешто на кое сум се нафатил до сега да го правам, извинете ако сум направил некаков пропуст, не сум дообјаснил нешто, и сл работи, битно ми е, дали мислете дека има друго решение за проблемов, т.е. да се реши на друг начин. За вака знам да го доправам, но ќе ми одземе многу време, а мислам дека решениево не е најоптималното.