gz08 Temat założony przez niniejszego użytkownika |
» 2015-11-27 20:56:36 Oto i cały kod: #include <iostream> #include <string.h> #include <string> #include <stdlib.h> #include <stdio.h> #include <windows.h> #include <conio.h>
int wybor;
using namespace std;
int gra() { int wybor_pola = 0; int test = 0; int pole1 = 0; int pole2 = 0; int pole3 = 0; int pole4 = 0; int pole5 = 0; int pole6 = 0; int pole7 = 0; int pole8 = 0; int pole9 = 0; bool wartosc_ifa = 0; bool wartosc_ifa2 = 0; do { do { cout << endl << endl << endl << endl << "Ruch 1" << endl; cout << "Przed ruchem:" << endl; cout << " | | " << endl << " " << pole1 << " | " << pole2 << " | " << pole3 << " " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " " << pole4 << " | " << pole5 << " | " << pole6 << " " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " " << pole7 << " | " << pole8 << " | " << pole9 << " " << endl << " | | "; cout << "Wybieram pole: "; cin >> wybor_pola; switch( wybor_pola ) { case 1: if( pole1 == 0 ) { pole1 = 1; wartosc_ifa = 1; } else { cout << "To pole jest juz zajete!"; } break; case 2: if( pole2 == 0 ) { pole2 = 1; wartosc_ifa = 1; } else { cout << "To pole jest juz zajete!"; } break; case 3: if( pole3 == 0 ) { pole3 = 1; wartosc_ifa = 1; } else { cout << "To pole jest juz zajete!"; } break; case 4: if( pole4 == 0 ) { pole4 = 1; wartosc_ifa = 1; } else { cout << "To pole jest juz zajete!"; } break; case 5: if( pole5 == 0 ) { pole5 = 1; wartosc_ifa = 1; } else { cout << "To pole jest juz zajete!"; } break; case 6: if( pole6 == 0 ) { pole6 = 1; wartosc_ifa = 1; } else { cout << "To pole jest juz zajete!"; } break; case 7: if( pole7 == 0 ) { pole7 = 1; wartosc_ifa = 1; } else { cout << "To pole jest juz zajete!"; } break; case 8: if( pole8 == 0 ) { pole8 = 1; wartosc_ifa = 1; } else { cout << "To pole jest juz zajete!"; } break; case 9: if( pole9 == 0 ) { pole9 = 1; wartosc_ifa = 1; } else { cout << "To pole jest juz zajete!"; } break; default: cout << "Nie ma takiego pola!"; break; } } while( wartosc_ifa != 1 ); cout << "Po ruchu 1:" << endl << " | | " << endl << " " << pole1 << " | " << pole2 << " | " << pole3 << " " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " " << pole4 << " | " << pole5 << " | " << pole6 << " " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " " << pole7 << " | " << pole8 << " | " << pole9 << " " << endl << " | | "; wartosc_ifa = 0; do { cout << endl << endl << endl << endl << "Ruch 2" << endl; cout << "Przed ruchem:" << endl; cout << " | | " << endl << " " << pole1 << " | " << pole2 << " | " << pole3 << " " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " " << pole4 << " | " << pole5 << " | " << pole6 << " " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " " << pole7 << " | " << pole8 << " | " << pole9 << " " << endl << " | | "; cout << "Wybieram pole: "; cin >> wybor_pola; switch( wybor_pola ) { case 1: if( pole1 == 0 ) { pole1 = 2; wartosc_ifa2 = 1; } else { cout << "To pole jest juz zajete!"; } break; case 2: if( pole2 == 0 ) { pole2 = 2; wartosc_ifa2 = 1; } else { cout << "To pole jest juz zajete!"; } break; case 3: if( pole3 == 0 ) { pole3 = 2; wartosc_ifa2 = 1; } else { cout << "To pole jest juz zajete!"; } break; case 4: if( pole4 == 0 ) { pole4 = 2; wartosc_ifa2 = 1; } else { cout << "To pole jest juz zajete!"; } break; case 5: if( pole5 == 0 ) { pole5 = 2; wartosc_ifa2 = 1; } else { cout << "To pole jest juz zajete!"; } break; case 6: if( pole6 == 0 ) { pole6 = 2; wartosc_ifa2 = 1; } else { cout << "To pole jest juz zajete!"; } break; case 7: if( pole7 == 0 ) { pole7 = 2; wartosc_ifa2 = 1; } else { cout << "To pole jest juz zajete!"; } break; case 8: if( pole8 == 0 ) { pole8 = 2; wartosc_ifa2 = 1; } else { cout << "To pole jest juz zajete!"; } break; case 9: if( pole9 == 0 ) { pole9 = 2; wartosc_ifa2 = 1; } else { cout << "To pole jest juz zajete!"; } break; } } while( wartosc_ifa2 != 1 ); cout << endl << "Po ruchu 2:" << endl << " | | " << endl << " " << pole1 << " | " << pole2 << " | " << pole3 << " " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " " << pole4 << " | " << pole5 << " | " << pole6 << " " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " " << pole7 << " | " << pole8 << " | " << pole9 << " " << endl << " | | "; wartosc_ifa2 = 0; } while(( pole1 && pole2 && pole3 ) ||( pole1 && pole4 && pole7 ) ||( pole1 && pole5 && pole9 ) ||( pole2 && pole5 && pole8 ) ||( pole3 && pole5 && pole7 ) ||( pole3 && pole6 && pole9 ) ||( pole4 && pole5 && pole6 ) ||( pole7 && pole8 && pole9 ) == 0 ); cout << endl << "Gratulacje Wygrywasz Gre!!!"; getch(); return 0; }
int main() { do { cout << "Witaj w wersji alfa gry komputerowej," << endl << "ktora jest cyfrowa wersja popularnej gry kolko i krzyzyk" << endl; getch(); Beep( 130, 900 ); system( "cls" ); cout << "MENU START:" << endl << "1. Nowa gra" << endl << "2. Pomoc" << endl << "3. Tworcy" << endl << "0. Wyjscie" << endl << endl << endl << "Moj wybor to: "; cin >> wybor; system( "cls" ); switch( wybor ) { case 1: gra(); break; case 2: cout << "Pola ponumerowane sa w sposob podany nizej na ilustracji. Aby wybrac dane pole wystarczy podac jego numer." << endl << " | | " << endl << " 1 | 2 | 3 " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " 4 | 5 | 6 " << endl << " | | " << endl << "-----------" << endl << " | | " << endl << " 7 | 8 | 9 " << endl << " | | " << endl << "W grze mamy do wyboru dwa znaki 1 albo 2. Wyboru dokonuje sie pomiedzy graczami tzn.: kto zanczyna gre jest 1"; getch(); break; case 3: cout << "Gra powstala dzieki:" << endl << endl << "1.Grzegorz Zielonka" << endl << "2.Tak jak wyzej" << endl << "3.Patrz punkt pierwszy" << endl << "4.Grzego... a zagalopowalem sie ;-) sorry" << endl << endl; getch(); system( "cls" ); break; case 0: return 0; case 250502: cout << "To jest ukryta zawartosc." << endl << "Cos wiecej sie wymysli w trakcie."; getch(); default: cout << "Hej sa tu tylko 'trzy' opcje!!!"; getch(); } } while( wybor != 1 ); return 0; }
|
|
carlosmay |
» 2015-11-27 21:17:05 W obecnej postaci warunek będzie spełniony dla wartości '1' i '2', oraz ( pole1 && pole5 && pole9 )
powoduje, że warunek będzie zawsze prawdziwy. Wystarczy podać pierwszy ruch i pętla nigdy się nie skończy. ( pole1 == pole2 && pole2 == pole3 ) ||( pole1 == pole4 && pole4 == pole7 ) to tak mniej więcej zadziała. Oczywiście całość musisz zanegować. |
|
gz08 Temat założony przez niniejszego użytkownika |
» 2015-11-27 21:20:43 Dzięki za pomoc. Jutro napisze czy działa u mnie :-) |
|
Bornegio |
» 2015-11-28 13:54:50 Moim skromnym i niedoświadczonym zdaniem wyszedł straszny potworek, to może dam ci kilka rad. Po pierwsze pole zapisz w tablicy jednowymiarowej. Typu np. int, albo od razu string i będzie prościej. Potem napisz funkcję odpowiadającą za sprawdzanie, czy warunek skończenia gry nie został spełniony (3 w rzędzie).
Tę funkcję jest napisać całkiem prosto, może to być funkcja bool, która zwraca true, jeśli gra skończona, albo false, jeśli nie. Może wyglądać np tak.
Zakładając, że mamy jednowymiarową tablicę stringów o nazwie plansza[], którą funkcja może przyjąć jako argument, albo po prostu może być tablicą globalną.
Funkcja w takim wypadku mogłaby wyglądać tak:
bool CzyKoniec(sting plansza[]) { //spradza pion i poziom za pomoca petli for for (int i = 0; i < 3; i++) { //sprawdza w pionie if (plansza =! " " && plansza == plansza[i+3] && plansza == plansza[i+6]) return true; //sprawdza w poziomie if (plansza[i*3] =! " " && plansza[i * 3] == plansza[i * 3 + 1] && plansza == plansza[i * 3 + 2]) return true; }//koniec petli for
//sprawdza skosy porównując do środkowego oczka w planszy if (plansza[4] != " " && plansza[4] == plansza[0] && plansza[4] == plansza[8]) return true; if (plansza[4] != " " && plansza[4] == plansza[2] && plansza[4] == plansza[6]) return true else return false; }
Po drugie nie musisz sprawdzać za każdym razem, czy wybrane pole jest zajęte, bo masz tablicę i robisz warunek, ze jeśli wybrane pole nie jest puste (czyli jest różne od " "), to wyskakuje komunikat, że jest zajęte i nie pozwala tam nadpisać i prosi o ponowne wykonanie ruchu.
Po trzecie za pomocą pętli for możesz napisać prostą funkcję, która czyści plansze. Wystarczy, że pętla for przeleci po każdym polu planszy i przypisze mu " " i będziesz mógł ją wywołać w każdej chwili komendą.
Do tego możesz napisać osobną funkcję wyświetlającą planszę i poprawisz tym sposobem czytelność kodu. Sam jak się uczyłem podstaw to napisałem Kółko krzyżyk, tylko, że z opcją gry przeciwko Ai, albo przeciwko drugiemu graczowi. Znajdę to podeślę
|
|
reju89 |
Problem z odpaleniem programu » 2015-11-28 14:39:17 Witam Jestem początkujący i właśnie przerabiam kurs c++ od podstaw. Potrzebuje pomocy. Pisze program z przykładu: #include <iostream> #include <cstdio> int main () { std::cout << "t\ tekst \"C:\\Hej\\ho.txt.\"" << std::endl; printf( "Uczymy sie \" pisac \t tekst C:\\Hej\\ho.txt. w stylu C\n" ); printf( "\n\na tu konczymy zabawe" ); std::cout << std::endl << std::endl << "zrob sobie przerwe :)" << std::endl;
return 0; } I nie mogę bo odpalić w sumie żadnego programu nie mogę odpalić. Napisałem tak jak było w zadaniu i niby pokazuje ze wszystko ok ale jak odpalam to nic się nie wyświetla tylko czarne tło. Napisałem : #include <iostream> #include <cstdio> int main () { std::cout << "==============" << std::endl; printf( "= To proste! =\n" ); std::cout << "==============" << std::endl; std::cout << "\t A jak to zrobic?\"" << std::endl; printf( "Koniec");
return 0; }
|
|
carlosmay |
» 2015-11-28 15:34:41 Witam Jestem początkujący i właśnie przerabiam kurs c++ od podstaw. Potrzebuje pomocy. | Załóż własny temat. Jeden temat, jeden problem. Większa szansa na odpowiedź. |
|
gz08 Temat założony przez niniejszego użytkownika |
» 2015-11-28 19:36:37 Bornegio dzięki za rade, ale ja po prostu nie byłem w stanie z moją wiedzą na temat c++ napisać czegoś mniej "potwornego". Jest to spowodowane tym, że ze względu na moje wrodzone lenistwo, choć uczę się c++ od 2 lat nie ukończyłem do tej pory w 100% żadnego kursu programowania w tymże języku. |
|
gz08 Temat założony przez niniejszego użytkownika |
» 2015-11-28 19:50:29 Niestety warunek: do . . . while( !( pole1 == pole2 && pole2 == pole3 ) ||( pole1 == pole4 && pole4 == pole7 ) ||( pole1 == pole5 && pole5 == pole9 ) ||( pole2 == pole5 && pole5 == pole8 ) ||( pole3 == pole5 && pole5 == pole7 ) ||( pole3 == pole6 && pole6 == pole9 ) ||( pole4 == pole5 && pole5 == pole6 ) ||( pole7 == pole8 && pole8 == pole9 ) ); także nigdy się nie kończy. |
|
1 « 2 » 3 |