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

gra w c++ bazujaca na tablicach 2D - potrzebna pomoc

kubabiker 25 Cze 2008 09:45 2375 8
REKLAMA
  • #1 5282987
    kubabiker
    Poziom 11  
    Posty: 20
    Witam, chcialem napisac prosta gre typu saper w konsoli, potrafie zrobic tablice:

    int tablica[6];

    tablica[0] = 1;
    tablica[1] = 2;
    tablica[2] = 3;
    tablica[3] = 4;
    tablica[4] = 5;
    tablica[5] = 6;

    Natomiast nie potrafie zrobic tak zeby komputer loso przypisal do kilku pol wartosc "1"-miny a reszte pozostawil wolna "0". Nastepnie chcialem dac algorytm ze jesli uzytkownik wybierze pole z wartoscia "1" to przegrywa, a jesli pole z wartoscia "0" to moze wykonac nastepny ruch a na tym polu pokaze sie "X" czyli wybrane juz pole. Na samym koncu chcialbym zeby byla mozliwosc wyboru "grasz jeszcze raz? T/N" nie wychodzisz z programu, T wracasz na sam poczatek i od nowa grasz. Oczywiscie plansza moze byc wieksza niz tylko ta z 6 polami:) wiem ze to jest proste w porownaniu z innymi grami tutaj zamieszczonymi ale mi to sprawia problem i licze na wasza pomoc:) z gory dziekuje i pozdrawiam. Jak macie jakies pytania to piszcie.
  • REKLAMA
  • #2 5283221
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 5283326
    Mattrick
    Poziom 12  
    Posty: 22
    Pomógł: 4
    Ocena: 2
    Na początek poczytaj o rand() i srand(). Potem, jeżeli jeszce nie znasz - o pętlach i warunkach.
  • #4 5283827
    kubabiker
    Poziom 11  
    Posty: 20
    Prosze sie nie smiac i mnie nie bluzgac ale stworzylem cos takiego:
    #include <iostream>
    #include <ctime>
    #include <conio.h>
    void main()
    {
    int tablica[6];
    int nWylosowana = rand() % 1 + 0 ;
    int T, N;
    srand (( int ) time(NULL));
    }
    {
    tablica[0] = 1;
    tablica[1] = 2;
    tablica[2] = 3;
    tablica[3] = 4;
    tablica[4] = 5;
    tablica[5] = 6;
    }
    
    cout << "Twoj ruch" << std::endl;
    
    {
    while (nWylosowana=0)
      std::cout << "Nastepny ruch." ;
    {else
    cout << "trafiles na mine" ;
     cout << "Jeszcze raz ? (T = TAK) : ";
        cin >> wybor;
       cout << "\n\n\n";
       }
       }
    {
       while((wybor == 'T') || (wybor == 't'));
    
    
    
    getch();
    }
    Dalej nie wiem jak przyporzadkowac wylosowana wartosc 1 lub 0 do danej komorki pola oraz na koncu nie wiem jak zrobic zeby program sie albo konczyl albo wracal do poczatku. Moglby mi ktos to poprawic albo napisac swoja wersje? chcialbym rowniez aby na ekranie byla wyswietlana taka tabelka 5x5 ktora zbudowana byla by z "-", "|" oraz na przecieciach z "+". Znalazlem taki kod z jakiegos innego programuu na tabelke 3x3
    {
      for(int i = 1; i <= 9; i++)
      {
        cout << " " << t[i] << " ";
        if(i % 3)       cout << "|";               // Po elementach 1,2,4,5,7,8 rysujemy |
        else if(i != 9) cout << "\n---+---+---\n"; // Po elementach 3 i 6 poprzeczka
        else            cout << endl;              // Po elemencie 9 koniec wiersza  
      }    
    }
    Z gory dziekuje wszystkim za pomoc
  • #5 5283944
    Dżyszla
    Poziom 42  
    Posty: 7065
    Pomógł: 1095
    Ocena: 211
    Poczytaj może o strukturze programu w C, o pętlach i tablicach (w tym wielowymiarowych). Bo bez tego to za daleko nie pójdziemy... Rzuciłeś się na zbyt głęboką wodę jak na swoją wiedzę, widzę. Później możesz przejśc do poczytania o losowaniu...
  • REKLAMA
  • #6 5283981
    Mattrick
    Poziom 12  
    Posty: 22
    Pomógł: 4
    Ocena: 2
    Łap pseudokod, jak to zakodzisz - twoja sprawa, ale nie licz, że napiszemy ci grę (bo co to za frajda skompilować tylko kod i się cieszyć?):
    
    main()
    {
      wyjdz = false;
    
      while (wyjdz == false)
      {
        przegral = false;
        mapa[3][3];
        wyswietlana_mapa[3][3]
    
        wypelnij mape losowymi wartosciami
        wypelnij wyswietlana mape spacjami ('pustymi' polami)
    
        while (przegral == false)
        {
          wczytaj co wpisal gracz
          sprawdz czy wybrane przez gracza pole jest bomba
    
            jezeli tak
              przegral = true;
              spytaj czy chce grac dalej
                jezeli tak
                  brak;
                jezeli nie
                  wyjdz = true;
    
            jezeli nie
              podane pole w wyswietlana_mapa przyjmuje wartosc z mapa (liczbe bomb dookola)
    
          for (int x = 0; x < 3; x++)
          {
             for (int y = 0; y <3; y++)
             {
                wyswietl wyswietlana_mapa[x][y];
             }
          }
        }
      }
    }
    
  • #7 5284100
    BTomasz92
    Poziom 16  
    Posty: 131
    Pomógł: 18
    Ocena: 15
    Ze swojej strony do nauki C++ mogę polecić megatutorial "Od zera do gier kodera" znajdujący się na stronie http://www.gamedev.pl/tutorials.php?x=category&id=18. Znajdziesz tam też sporo materiałów na temat tworzenia gier.

    Pozdrawiam,
    BTomasz92
  • REKLAMA
  • #9 5284179
    kubabiker
    Poziom 11  
    Posty: 20
    no tak, chce w 2d na osiach powiedzmy x i y o rozmiarach 5x5 poumieszczac te wartosci w polach i wybierac co jest pod nimi

Podsumowanie tematu

✨ Dyskusja dotyczy stworzenia prostej gry typu saper w C++ wykorzystującej tablice dwuwymiarowe. Autor pyta, jak losowo przypisać wartości "1" (miny) do wybranych pól planszy, a pozostałe ustawić na "0" (puste pola). Chce również zaimplementować mechanizm sprawdzający, czy wybrane pole to mina (przegrana) lub puste pole, które zostaje oznaczone jako wybrane ("X"). Dodatkowo planuje umożliwić powtórną grę bez wychodzenia z programu, z pytaniem "grasz jeszcze raz? T/N". W odpowiedziach sugerowano naukę funkcji rand() i srand() do losowania, pętli, warunków oraz struktur danych, w tym tablic wielowymiarowych. Podkreślono, że autor powinien zacząć od podstaw programowania w C++, a następnie stopniowo rozwijać projekt. Zaproponowano pseudokod ilustrujący logikę gry, w tym inicjalizację planszy, losowe rozmieszczenie min, obsługę ruchów gracza, sprawdzanie warunków przegranej oraz możliwość powtórzenia rozgrywki. Zwrócono uwagę, że autor początkowo używał tablicy jednowymiarowej zamiast dwuwymiarowej, co wymaga korekty. Polecono także tutoriale dostępne na gamedev.pl jako materiały edukacyjne do nauki programowania gier w C++.
Wygenerowane przez model językowy.
REKLAMA