logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Pomysł na prostą grę w C/C++: Wąż, Kółko i Krzyżyk, HighLow lub Milionerzy

robek102 11 Kwi 2008 17:45 22180 8
REKLAMA
  • #1 5019190
    robek102
    Poziom 15  
    Posty: 199
    Pomógł: 15
    Ocena: 4
    Witam.
    Czy ktoś byłby w stanie mi pomóc napisać jakąś grę. Nie musi oczywiście to być gra z bajerancko grafiką ale Oby miała sens. Hmmm myślałem o grze typu wąż, HighLow albo kółko i krzyżyk i też myślałem o milionerach bo myślę że by była prosta. . Czy ktoś mi podradzi jakiś prosty pomysł. Zaznaczam że nie jestem taki zaawansowany w programowaniu C/C++
    Pozdrawiam Serdecznie
  • REKLAMA
  • #3 5019730
    Dawid.wielun
    Poziom 20  
    Posty: 464
    Pomógł: 10
    Ocena: 13
    Ja pisałem kółko i krzyżyk
    
    #include "newconio.h" 
    #include <iostream.h>
    #include <string>
    #include <time.h>
    #define FOR(n) for(int i=0; i<n; i++)
    using namespace std;
    char plansza[9];
    bool check=true;
    
    void WyswietlTytul()
    {
    cout<<"GRA ";
    delay(800);
    cout<<"W ";
    delay(700);
    cout<<_pl("KÓŁKO ");
    delay(800);
    cout<<"I ";
    delay(600);
    cout<<_pl("KRZYŻYK ");
    delay(800);
    cout<<"DLA ";
    delay(600);
    cout<<"2 ";
    delay(500);
    cout<<_pl("OSÓB\n\n");
    delay(1500);
    }
    
    bool LosujGracza()
    {
    bool random;
    srand(static_cast<int>(time(NULL)));
    return random=rand() % 2;
    }
    
    int RysujPlansze()
    {
    int trzy=0;
    
    cout<<"  -------\n  |";
    FOR(9) {
    cout<<plansza[i];
     trzy++;
     if(trzy==3) { 
     cout<<"|\n  ";
     trzy=0; }
     if(i!=8)
     cout<<"|";
     }
     cout<<"-------\n";
     delay(1500);
    }
    
    bool sprawdz()
    {
    if((plansza[0]=='O' && plansza[1]=='O' && plansza[2]=='O') ||
       (plansza[3]=='O' && plansza[4]=='O' && plansza[5]=='O') ||
       (plansza[6]=='O' && plansza[7]=='O' && plansza[8]=='O') ||
       (plansza[0]=='O' && plansza[3]=='O' && plansza[6]=='O') ||
       (plansza[1]=='O' && plansza[4]=='O' && plansza[7]=='O') ||
       (plansza[2]=='O' && plansza[5]=='O' && plansza[8]=='O') ||
       (plansza[0]=='O' && plansza[4]=='O' && plansza[8]=='O') ||
       (plansza[2]=='O' && plansza[4]=='O' && plansza[6]=='O'))
     { cout<<_pl("\nKółka wygrały!\n");
       RysujPlansze();
       return false; }
    
    if((plansza[0]=='X' && plansza[1]=='X' && plansza[2]=='X') ||
       (plansza[3]=='X' && plansza[4]=='X' && plansza[5]=='X') ||
       (plansza[6]=='X' && plansza[7]=='X' && plansza[8]=='X') ||
       (plansza[0]=='X' && plansza[3]=='X' && plansza[6]=='X') ||
       (plansza[1]=='X' && plansza[4]=='X' && plansza[7]=='X') ||
       (plansza[2]=='X' && plansza[5]=='X' && plansza[8]=='X') ||
       (plansza[0]=='X' && plansza[4]=='X' && plansza[8]=='X') ||
       (plansza[2]=='X' && plansza[4]=='X' && plansza[6]=='X'))
     { cout<<_pl("\nKrzyżyki wygrały!\n");
       RysujPlansze();
       return false; }
    
    if(plansza[0]!='1' && plansza[1]!='2' && plansza[2]!='3' &&
       plansza[3]!='4' && plansza[4]!='5' && plansza[5]!='6' &&
       plansza[6]!='7' && plansza[7]!='8' && plansza[8]!='9')
     { cout<<"\nRemis\n";
      RysujPlansze();
      return false; }
      else return true;
    }
    
    
    int gra(char znak)
    {
    char NPola;
    RysujPlansze();
    ponow:
    cout<<_pl("\nWprowadź numer pola w którym chcesz wstawić ");
    if(znak=='O')
    cout<<_pl("kółko\n");
    else
    cout<<_pl("krzyżyk\n");
    cin>>NPola;
    if(NPola != '1'  && NPola != '2' && NPola != '3' && NPola != '4' && 
       NPola != '5' && NPola != '6' && NPola != '7' && NPola != '8' && NPola != '9') {
    cout<<_pl("Można wpisywać tylko liczby z zakresu 1-9 !\n");
    goto ponow; }
    int iNPola=NPola-49;
    if(plansza[iNPola]=='O' || plansza[iNPola]=='X') 
      {
       cout<<"NA POLU "<<NPola<<_pl(" JEST JUŻ \"")<<plansza[iNPola]<<"\"!";
       goto ponow; }
       
    FOR(9)
    {
    if(NPola==plansza[i])
    plansza[i]=znak; 
    }}
    
    
    main()
    {
    _cinit();
    WyswietlTytul();
    fillrectattr(0xbb,1,1,200,1000);
    FOR(9)
    plansza[i]=(i+48)+1; // char(49)=1 (char(49++)=1++)
    
    if(LosujGracza()) { cout<<"GRACZ 2 zaczyna\n\n"; gra('X'); }
    else cout<<"GRACZ 1 zaczyna\n\n";
    
    FOR(9){
    check=sprawdz();
    if(check) {
    cout<<"\nGRACZ 1\n\n";
    delay(1000);
    gra('O'); }
    else break;
    
    check=sprawdz();
    if(check)
    {
    cout<<"\nGRACZ 2\n\n";
    delay(1000);
    gra('X'); }
    else break;
    }
    
    getch();
    return 0;
    }
    


    Załączę może całość
    Załączniki:
    • kik.rar (17.43 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #4 5020900
    lord_dagoth
    Poziom 25  
    Posty: 860
    Pomógł: 68
    Ocena: 6
    hmmm... powiedz jakiego typu to ma być gra, wystarczy konsolowa? Bo jeżeli tak to moge pokazać Ci kod w którym napisałem jak narazie menu i główny interfejs gry, do tego udostępnić biblioteke do obsługi konsoli pod windą (jest to dość mocno zmodyfikowana biblioteka z książki Programowanie Gier Kompedium, dająca praktycznie nieograniczone możliwości związane z konsolą ;))

    Gra jest nawet przystosowana do rozdzielczości 1024x768 ;)
  • REKLAMA
  • #5 5021069
    robek102
    Poziom 15  
    Posty: 199
    Pomógł: 15
    Ocena: 4
    @da-w-id.wielun myślę że coś pomyśle w Twoim kierunku bo kółko i krzyżyk może być w sumie :)
    @lord_dagoth ta gra może być konsolowa bez problemu. Fajny właśnie ten pacman co kolega @11111olo podał.
    a mam takie pytanko na temat Sudoku... Czy trudno jest napisać?
    Pozdrawiam
  • #6 5021081
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    Jeśli chodzi o sam interfejs to rzecz nienajtrudniejsza, a po godzince nauki C/C++ w zasadzie banalna. Jesli chodzi o sama grę (zasady itd) też prosta sprawa :-)
  • REKLAMA
  • #7 5022556
    lord_dagoth
    Poziom 25  
    Posty: 860
    Pomógł: 68
    Ocena: 6
    A jak stoisz z programowaniem? Mam napisane hmmm... menu do prawie każdej gry konsolowej, moge dać exe. Narazie jest tam niewiele zaimplementowane, bo skupiłem się nad rozwojem samej biblioteki. Po menu poruszamy się normalnie strzałkami, następnie wybieramy "Nowa Gra" i tam po ramkach możemy poruszać się spacjami. Należy pamiętać, żeby po odpaleniu "gry" zmaxymalizować okno konsoli, zostało ono poszerzone do rozmiarów aby udawało rozdzielczość 1024x768. Jak będziesz zainteresowany to moge udostępnić kod biblioteki (jest tam troszke komentarzy, nazwy po angielsku, ale myśle że się połapiesz ;)).
    Załączniki:
    • myProject.exe (480.09 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #8 5025627
    webmortiz
    Poziom 20  
    Posty: 467
    Pomógł: 24
    Ocena: 15
    Co do sudoku to rzecz jasna interfejs i sprawdzanie zasad to pikus. Oczywiscie dla poczatkujacych - zrobia tak jak potrafia i wcale nie musi to wygladac gites. Ale jesli chodzi o algorytm generowania planszy to juz troche hadrcore. Mozna metoda brute force ale wygenerowana plansza nie bedzie do konca zgadzac sie z zasadami bo bedzie sie dosc czesto zdarzac ze na koncu bedzie kilka mozliwosci rozwiazania. Wiec sudoku dla poczatkujacego nie polecam. Ale polecam np. mastermind ;) Dolaczam gotowca ktorego napisalem kiedys - tak jak potrafilem ;)
    Załączniki:
    • mastermind.rar (14.31 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 5026836
    lord_dagoth
    Poziom 25  
    Posty: 860
    Pomógł: 68
    Ocena: 6
    A odemnie możesz sobie wziąść menu do swojej gry:) Jak będiesz chciał to udostępnie kod i biblioteke:)

Podsumowanie tematu

✨ Dyskusja dotyczy pomysłów na proste gry w C/C++ dla początkujących programistów, takich jak Wąż, Kółko i Krzyżyk, HighLow czy Milionerzy. Uczestnicy sugerują, że gry konsolowe są najłatwiejsze do realizacji i dzielą się fragmentami kodu, np. implementacją Kółka i Krzyżyka z wykorzystaniem standardowych bibliotek C++ oraz prostych funkcji do wyświetlania planszy i losowania gracza. Poruszono także temat interfejsu konsolowego, gdzie zaproponowano użycie zmodyfikowanej biblioteki do obsługi konsoli pod Windows, umożliwiającej tworzenie menu i nawigację za pomocą klawiszy strzałek oraz spacji, a także dostosowanie rozmiaru okna konsoli do rozdzielczości 1024x768. Wspomniano, że implementacja Sudoku jest bardziej skomplikowana ze względu na algorytm generowania planszy i zapewnienie unikalnego rozwiązania, dlatego dla początkujących lepsze są prostsze gry, np. Mastermind. Udostępniono linki do wcześniejszych wątków z przykładami gier oraz propozycje kodu i bibliotek do dalszej nauki i rozwoju projektów.
Wygenerowane przez model językowy.
REKLAMA