Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Zdziwiony

Próby zakodzenia pierwszej gry :E

Rekomendowane odpowiedzi

Witam, jako że napisanie pierwszego programu w C++ mam już za sobą, postanowiłem zrobić sobie prostą grę... (Tak wiem bardzo nieudolne to wyświetlanie kółek :E)

 

Oto kod:

http://wklej.org/id/1356682/

 

Nie skończyłem tej gry (w sensie, nie wyświetla się kto wygrał), ponieważ ten kod jest do kitu :E, a jeśli kliknie się na przyciski w odpowiedniej kolejności to się gra dziwnie buguje :E (w przyciusku wyświetlają się dwa stany: O oraz X...

 

Możecie poradzić jak rozwiązać mój problem i doprowadzić kod do tego, że chociaż zaznaczanie krzyżyków i kółek będzie działać :P ?

 

Resztę postaram się zrobić sam... Wiem, że pewnie to jest baardzo proste, ale to jest moja pierwsza gra, i cały kod skleciłem z tego co wiem, myśląc logicznie... (Tak wiem te przyciski w API windowsa to trochę przesada ale to jedyna biblioteka do GUI w c++ jaką znam :E)

 

Proszę Was o pomoc i pozdrawiam :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie poprawię kodu, bo nie mam windowsa żeby zobaczyć dokładnie o co tam biega. Wybacz :D

 

Zobacz może zmienną "liczklik", nie definiujesz jej (nie przypisujesz żadnej wartości), więc w domyśle ma wartość '0'

A jeżeli tak to w kodzie:

if(liczklik <= 3 )

Przepuszczasz ja 4 razy (stany: 0,1,2,3), a chyba chcesz 3 przejścia.

 

Ogólnie to nie powinno tam być pętli zamiast ifa? W sumie nie wiem do końca co chcesz tym kodem osiągnąć :)

 

Jak to nie to, to przejrzyj wszystkie ify i zmienne. Powprowadzaj jakieś inne wartości i zobacz jak się program zachowa. Imo na 99% w nich siedzi ten bug.

 

I rada co do przyszłych pytań, nie wrzucaj całego kodu, tylko fragmenty w których wg. Ciebie może być błąd. Zwiększa to szansę na otrzymanie pomocy :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Też sądzę, że bug jest w mojej 'sztucznej inteligencji' :E

 

A liczklik przepuszczam 3razy, bo po kliknięciu czegokolwiek:

               if(( HWND ) lParam == Nr1 )
               {
              DestroyWindow( Nr1 );
              Nr1a = CreateWindowEx( 0, "BUTTON", "X", WS_CHILD | WS_VISIBLE,
              0, 0, 50, 50, hwnd, NULL, hInstance, NULL );
              //
               ++liczklik;
               istnieje[0] = 1;
               }

 

Zawsze dodaje + 1 :P

 

Ogólnie mam tylko jedno pytanie:

Czy ruchy komputera mogą wyglądać tak jak je tutaj zapisałem, czy raczej nie ?

 

Jak tak to ja to naprawie! :E

A jak nie no to nie wiem... :(

 

EDIT: Pętli tam nie dam, jeśli zostawię resztę tak jak jest, bo się całkiem zwiksuje :E

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Skoro twierdzisz, że jest ok, to ok :)

 

Zawsze możesz napisać jakaś inteligencje zastępczą, np. losujesz liczbę z zakresu 0-8, sprawdzasz czy przycisk z tym numerem jest wolny, jak jest to zapisujesz tam wartość, a jak nie to losujesz dalej i znowu sprawdzasz do skutku. Przeciwnik to będzie żaden, ale pozwoli przynajmniej Ci to na ukończenie pisania tej "gry" :E . Można to będzie ulepszyć później.

 

Poczytaj sobie tez o środowiskach RADowych, np. C++ Builder, Visual Studio. Sporo upraszczają sprawę budowania layoutu aplikacji, bo Winapi jest, powiedzmy mało przyjemne :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Co do WinAPI to już się przyzwyczaiłem :E To pierwsza biblioteka jaką ogarnąłem :E

 

A co do tego losowania niezły pomysł :)

 

Na pewno będzie lepszym przeciwnikiem niż jest teraz :E

Screen :E :

http://zapodaj.net/7fc732ea99d5c.jpg.html

 

EDIT: Visual, pozwala na 'podglądanie' okienka przy pisaniu :D ?

Aktualnie używam Code::Blocks

 

Ale wracając do tematu: I tak jestem z siebie dumny, że chociaż to napisałem :E

Jakoś od początku nauki c++, mam jakieś problemy z grami :E (O SFML'u i allegro nie wspomnę, bo tam nawet menu nie potrafię zrobić :E "tzn. nie potrafię obsłużyć kliknięć myszą w dany obiekt :E"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
EDIT: Visual, pozwala na 'podglądanie' okienka przy pisaniu :D ?

Tak, C++ builder też. To właśnie domena środowisk RAD. Pamiętam, jak zaczynałem się uczyć programowania to też kombinowałem coś w winapi i szczerze niezbyt mi to szło :E. Niedługo potem wpadł mi w łapy C++ Builder i zapomniałem o tak niskopoziomowych bibliotekach :). Z tych 2 co pisałem wyżej polecam Visual Studio, pisząc w C++ będziesz chyba musiał przyzwyczaić się tam do obecności .NETu (nie pamiętam dokładnie) ale jak już go poznasz to na pewno polubisz :) Upraszcza maaaaaaaaaaaaasę rzeczy, np. zabezpieczone połączenie ftp to ok. 4-5 linii kodu :cool:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

hmm... czyli w Visualu GUI nie pisze się jak w API ? tylko, jakkoś osobno ?

Jeśli tak to już to lubię :D Tylko trzeba ogarnąć obsługę tego cudeńka ^^

Jutro sobie zainstaluje :)

 

PS:Szczerze powiedziawszy to tez na początku miałem problemy z GUI, teraz już troche z tym lepiej, biemniej jednak zrobić swój własny przycisk w API windowsa to już przegięcie :E

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

GUI buduje się metodą przeciągnij-upuść, parametry "startowe" ustalasz wpisując je w okienku parametrów np. przycisku. Kodzisz wtedy tylko logikę programu. Jest to łatwiejsze od klepania wszystkiego z palca i jak np. w przypadku twojej gry kod będzie przejrzystszy, aktualnie ponad połowa jego to tworzenie/umieszczanie/wyświetlanie GUI, a w visual studio to sobie po prostu wyklikasz :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zainstalowałem. Pierwsze wrażenie: BOŻE CO TO JEST :E

Jedyna rzecz, która się kompiluje to "Hello World" i to z drobnymi komplikacjami :E.

 

Czy ja się cały czas uczyłem innego C++ ? :E

Moje uwagi:

#include <conio.h>
#include <iostream>
int main()
{
   std::cout << "Hello World";
   getch();
   return 0;
}

 

Nie kompiluje się :E

 

Kursem stąd można sobie d**ę podetrzeć pisząc w Visualu: http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Podstawy-WinAPI/168

:E, kompilacja kodu na końcu powoduje parę-set błędów :E

 

A przeniesienie mojego programu do tego Visuala jest po prostu nie realne :E (Wywala ponad 200błędów :E)

 

Spróbowałem, więc zrobić sobie okienko tworząc nowy projekt, i dopisując sobie linijkę tworzącą przycisk powoduje to jakieś dziwne 3 błędy...

A czegoś do wyklinania okienka póki co tam nie widzę ...

 

No i tu moje pytanie:

Czy Microsoft w Visualu preferuje jakiś inny C++ :E ?, Bo próbując w tym coś napisać (nawet konsolowego) odnoszę wrażenie, że oni mają swój świat... :E

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A może napiszesz, co to są za błędy? Może to być kwestia chociażby linkera.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

U mnie aplikacja z pierwszego posta się skompilowała, potrzebna była tylko zmiana wielkości liter w MB_IConerror na duże.

 

Używam VC++ 2010.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Visual Studio nie nadaję sie do C++. Dopiero w wersji 2013 kompilator robi to co powinien robić bo dostał update i siako tako działa. Jak pisać w Visual'u to niestety (albo stety) w c#.

Dodatkowo jeśli zaczniesz używać Visual'a, to rób aplikacje WPF'owe a nie Windows Forms.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zainstalowałem sobie spolszczenie do tego Visuala 2013 i stworzyłem sobie nowy całkiem pusty projekt, i okienko z kursu się kompiluje :D, te błędy wydupiało jak próbowałem zmodyfikować kod wygenerowany przez VS przy projekcie Win32.

 

A jeśli chodzi o ten podgląd okienka i jego wyklikanie to gdzie to jest ? Jakoś tego nie widzę :hmm:

 

 

Jeśli chodzi o te getch();

To wywala:

Błąd	1	error C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.	c:\users\łukasz\desktop\projekt\projekt1\projekt1\źródło.cpp	6	1	Projekt1

Boje się przenosić mój większy projekt (spróbuje wieczorem) bo nie wiem czy się będzie bezbłędnie kompilować :E

 

PS:Skoro VS nie jest do C++ to po co dali taką opcję :E ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tu masz przykład użycia: Mój link

 

Ten błąd mówi, że używasz przestarzałej funkcji getch, która nie jest bezpieczna.

Użyj np. "system("Pause");"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

lubie WinAPI ale robić w nim GUI to masakra :kwasny: ,

aż mie sie nie chce analizować kodu..

 

Borland C++ - VCL jest błyskawiczny ale rodzi złe nawyki - po nim wszystko wydaje się nieintuicyjne

prosta i moja jedyna gra z VLC(wąż) rocznik 2004r:

Snake_InGame.PNG

https://dl.dropboxusercontent.com/u/10755180/PC/Snake_gra/Readme.html

(ostatnio popsułem css więc strona sie rozjechała)

 

QT Creator całkiem niezły - myśle ze najłatwiej byłoby Ci się na niego przestawić - mnie wkurza bo za dużo trzeba robić samodzielnie, klasy tworzyć z poziomu kodu nie dodają się "automatycznie" po kliknięciach prawie jakby się robiło w WinAPI - więc będzie idealny.

 

WinAPI - zegarek, budzik i uruchamiator do nawigacji Windows CE Medion 510T, próbowałem go przenieść z Visual C++ Embedded do Win32 i wymiękłem dlaczego nie działał:

(API w CE jest prawie identyczne z WinAPI tylko ze w unikodzie i ma braki więc musiałem dorobić GetPrivateProfileStringW)

Zegarek_MainScreen_WM.JPG

 

wklejam to moze sie przyda skoro jesteś fanem WinAPI, a może naprawisz - kompilując na x86 ;)

https://dl.dropboxusercontent.com/u/10755180/PC/ZEGAREK/ZEGAREK.zip

nie wiem co jest źle że zamiast treści okna rysuje białe tło

(próbóbowałem kompilować w Dev++ i LCC)

 

okno miało być dodatkowym modułem do:

https://dl.dropboxusercontent.com/u/10755180/PC/Panel/Readme.html

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Borland C++ - VCL jest błyskawiczny ale rodzi złe nawyki - po nim wszystko wydaje się nieintuicyjne

 

W zasadzie zgadzam się, przesiadłem się na C++ Buildera zaraz po tym jak zacząłem conieco ogarniać z programowania, później dopadłem do VS (C#) i programuje w nim do dzisiaj. Niedawno pisałem prosta aplikacyjkę, postawiłem na Pythona i jakąś nieskomplikowaną biblioteke do GUI - coby spróbować w czymś innym (poza tym program miał być na linucha). I fakt, ciut denerwował mnie fakt, że musiałem mozolnie opisywac każdą rzecz, którą w VS miałem na 2 kliknięcia :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Fanem API - przesada to po prostu jedyna biblioteka do GUI jaką trochę umiem :E

Użyj np. "system("Pause");"

Rly ? :E Przecież to mi wywali: "Aby kontynuować wciśnij dowolny klawisz...", jest to polecenie z cmd, a bez tego getch(); nie da sie nic praktycznie zrobić z biblioteką conio....

 

Inna sprawa:

Próbuje przenieść mojego Cleaner'a na Visuala, efekt:

void configweryf()  //weryfikacja poprawności cofinga (słabe ale zawsze jakieś jest  )
{

int rozmiar;
int poczatek; 
int koniec;
int roznica;
int suma;
fstream mojplik("config.conf", std::ios::in | std::ios::out);
//
if (mojplik.good() == true)
{

	poczatek = mojplik.tellg();
	mojplik.seekg(0, ios::end);
	koniec = mojplik.tellg();
	mojplik.close();
	roznica = koniec - poczatek;
	suma += roznica; //dodawanie
	rozmiar = suma;


	if (rozmiar == 94) //jeśli równa się 94bajt
	{
		//ok
	}
	else  //jelsi nie
	{
		MessageBox(hwnd, "Wykryto nieautoryzowaną modyfikację w pliku config.conf, plik zostanie zresetowany!", "Ostrzeżenie!", MB_ICONWARNING | MB_OK);
		ofstream mojplik("config.conf"); //tworzenie pliku
		if (mojplik.good())
		{
			mojplik << "ClearTemp:true ClearFireFox:true	ClearChrome:true	ClearOpera:true	ClearDNS:true Clearkosz:true";
			MessageBox(hwnd, "Plik został zresetowany, program może teraz działać poprawnie.", "Powodzenie!", MB_ICONINFORMATION | MB_OK);
			DestroyWindow(hwnd);

		}
		else  MessageBox(hwnd, "Nie można utworzyć pliku! (Może nie masz do tego uprawnień?)\nNiektóre opcje nie będą działać poprawnie!", "Błąd!", MB_ICONERROR | MB_OK);
	}

}
else
{
	MessageBox(hwnd, "Nie odnaleziono pliku config.conf! Program spróbuje go utworzyć.", "Błąd!", MB_ICONERROR | MB_OK);
	ofstream mojplik("config.conf"); //tworzenie pliku
	if (mojplik.good() == true)
	{
		mojplik << "ClearTemp:true ClearFireFox:true	ClearChrome:true	ClearOpera:true	ClearDNS:true Clearkosz:true";
		MessageBox(hwnd, "Plik został utworzony, program może teraz działać poprawnie.\n\n", "Powodzenie!", MB_ICONINFORMATION | MB_OK);

	}
	else  MessageBox(hwnd, "Nie można utworzyć pliku! (Może nie masz do tego uprawnień?)\nNiektóre opcje nie będą działać poprawnie!", "Błąd!", MB_ICONERROR | MB_OK);

}

}

Błąd:

Błąd	12	error C4700: użycie niezainicjowanej zmiennej lokalnej "suma"	c:\users\łukasz\desktop\projekt\windecleaner(visual)\windecleaner(visual)\main.cpp	1113	1	WindeCleaner(VISUAL)

Czy tego VS już całkiem poryło :E ? Przecież jest jak byk int suma;, ale Visual wie lepiej... :E

 

Lub inny:

void RozmiarChrome()
{
char SHGFP_TYPE_CURRENT;
char AppDataFolder8[MAX_PATH];
SHGetFolderPathA(0, CSIDL_LOCAL_APPDATA, 0, SHGFP_TYPE_CURRENT, AppDataFolder8);
string IEhist, IEhist2, IEhist3, IEhist4, konwert;
konwert = AppDataFolder8;
IEhist = konwert + "\\Google\\Chrome\\User Data\\Default\\*.*";
IEhist2 = konwert + "\\Google\\Chrome\\User Data\\Default\\";
IEhist3 = konwert + "\\Google\\Chrome\\User Data\\Default\\Cache\\*.*";
IEhist4 = konwert + "\\Google\\Chrome\\User Data\\Default\\Cache\\";
_finddata_t danePliku8;
long uchwyt8 = _findfirst(IEhist.c_str(), &danePliku8);
int SzukamDalej8 = _findnext(uchwyt8, &danePliku8);
//
_finddata_t danePliku9;
long uchwyt9 = _findfirst(IEhist3.c_str(), &danePliku9);
int SzukamDalej9 = _findnext(uchwyt9, &danePliku9);
//
string usunIE;
long long poczatek, koniec, roznica, suma;
suma = 0;
do{
	SzukamDalej8 = _findnext(uchwyt8, &danePliku8);
	usunIE = IEhist2 + danePliku8.name;
	fstream mojplik(usunIE.c_str());
	poczatek = mojplik.tellg();
	mojplik.seekg(0, ios::end);
	koniec = mojplik.tellg();
	mojplik.close();
	roznica = koniec - poczatek;
	suma += roznica; //dodawanie
} while (SzukamDalej8 != -1);
//
do{
	SzukamDalej9 = _findnext(uchwyt9, &danePliku9);
	usunIE = IEhist4 + danePliku9.name;
	fstream mojplik(usunIE.c_str());
	poczatek = mojplik.tellg();
	mojplik.seekg(0, ios::end);
	koniec = mojplik.tellg();
	mojplik.close();
	roznica = koniec - poczatek;
	suma += roznica; //dodawanie

} while (SzukamDalej9 != -1);
wMB = suma / 1048576;
}

Błąd:

Błąd	12	error C4700: użycie niezainicjowanej zmiennej lokalnej "SHGFP_TYPE_CURRENT"	c:\users\łukasz\desktop\projekt\windecleaner(visual)\windecleaner(visual)\main.cpp	1113	1	WindeCleaner(VISUAL)

 

Te błędy występują już po małym przerobieniu kodu...

Bez jego przerabiania wywala dużo więcej błędów.... (głównie przez, dodanie wątków..., przejrzyjcie kod to zobaczycie o co chodzi ;P)

Zresztą jak ktoś chce sprawdzić niech spróbuje kompilacji tego w VS: http://windecleaner.ugu.pl/files/sources/WindeCleaner%20v1.3.0.cpp

 

Na code::blocks oczywiście wszystko jest ok...

 

Dobija mnie ten Visual :E

 

EDIT:

Są dwie opcje:

1. Visual jest jakiś dziwny... a pisze sie w nim w C++ by M$ :E

2. Visual, jest na tyle dobry, że widzi błędy tam, gdzie GCC ich nie widzi :D (w sensie nie pozwala na kompilacje kodu, potencjalnie mogącego nie działać)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Czy tego VS już całkiem poryło :E ? Przecież jest jak byk int suma;, ale Visual wie lepiej... :E

 

W którym konkretnie miejscu inicjalizujesz sumę?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

void configweryf()  //weryfikacja poprawności cofinga (słabe ale zawsze jakieś jest  )
{

       int rozmiar;
       int poczatek; 
       int koniec;
       int roznica;
       int suma; //deklaracja
       fstream mojplik("config.conf", std::ios::in | std::ios::out);
       //
       if (mojplik.good() == true)
       {

               poczatek = mojplik.tellg();
               mojplik.seekg(0, ios::end);
               koniec = mojplik.tellg();
               mojplik.close();
               roznica = koniec - poczatek;
               suma += roznica; 
               rozmiar = suma; //użycie

 

PS: W Code::Blocks kompiluje się bez problemu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Kompilator w VS jest bardzo zapobiegawczy i stara się przewidywać twoje błędy.

 

Zauważ, że utworzyłeś (zadeklarowałeś) zmienną suma, ale nic do niej nie wpisałeś, a następnie wpisujesz z niej wartość do zmiennej rozmiar.

 

Przypisanie:

suma += roznica;

Jest inicjalizacją niejawną, wg. kompilatora 'roznica' też może być pusta i w wyniku otrzymasz pustą zmienną 'suma'. Uwierz mi, taki bugi się ciężko wychwytuje jak masz kilkaset linii kodu :E. Dlatego VS dmucha na zimne i nie przepuszcza takiej sytuacji.

 

Najprościej zrobić deklaracje z inicjalizacją, np: "int suma=0;" i tyle :E

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

aha.............

O tym w kursach nie piszą :E

W sumie to dobry trening pisać w Visualu :E Nic ci nie przepuści :E

No to czeka mnie niezłe przepisywanie kodu mojego programu :E

 

 

A co do tego wyklinania okienka w VS C++ to widzę, że trzeba trochę c# ogarnąć :P (Bo wyklikac przycisku nawet nie mogę xd), ale już przy stworzeniu projektu C# sobie coś tam wyklikałem :P (gorzej z pisaniem :E)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...