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

Jak uruchomić grę w pełnym ekranie konsoli w Dev-C++ 4.9.9.0?

K_o_N_z_I 28 Sty 2006 21:44 10019 7
  • #1 2231265
    K_o_N_z_I
    Poziom 17  
    Posty: 336
    Pomógł: 13
    Ocena: 55
    mam problem, mianowicie zachciało mi się startu programu a dokładniej gry w pełnym okienku konsoli, myślałem że to żaden problem, jednak okazuje się być inaczej, nie mogę sobie sam z tym poradzić bo i w necie nie mogę nic znaleźć

    a o to kod prostej gierki znanego wszystkim snake-a :D :

    #include<iostream.h>
    #include<windows.h>
    #include"conio.h"
    
    
    //*****************RYSOWANIE RAMKI**********************************************
    
    void ramka() //rysuje ramke na ekranie
    { int c;
    
      gotoxy(1, 2);
      for (int i=0; i<70; ++i)
        printf("%c", 205);
      printf(" %c", 30);
      gotoxy(1, 22);
      for (int j=0; j<70; ++j)
        printf("%c", 205);
      printf(" %c", 31);
      }
    
    //*****************OBSLUGA KURSORA**********************************************
    
    void gotoxy(int x, int y)
    {
       COORD coord;
       coord.X = x;
       coord.Y = y;
       SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    }
    
    //******************DEKLAROWANIE STRUKTURY**************************************
    
    struct struktura
    {
    	int w;
    	int x;
    	int y;
    };
    
    
    static struktura snake[1000];
    
    int p;
    
    //******************DEKLAROWANIE STRUKTURY**************************************
    
    struct strukt
    {
    	int x;
    	int y;
    	int ok;
    };
    
    static strukt biji;
    
    int opt_cor;
    int a;
    int b;
    char znak;
    
    //*********************CIAŁO FUNKCJI********************************************
    int main()
    {
    	int z,zz;
    	int speed;
    	char speed1[3];
    	int x;
    	int y;
    	char opt_ex='n';
    	char opt;
    	cout<<endl<<endl;
    	ramka();
    	gotoxy(32,5);
        cout<<"Jak grac?"<<endl;
        gotoxy(15,8);
    	cout<<"Kierujesz weza za pomoca tych 4 klawiszy"<<endl;
    	gotoxy(15,11);
        cout<<"[W] - w gore"<<endl;
        gotoxy(15,12);
        cout<<"[S] - w dol"<<endl;
    	gotoxy(15,13);
        cout<<"[A] - w lewo"<<endl;
        gotoxy(15,14);
    	cout<<"[D] - w prawo"<<endl<<endl<<endl;
    	gotoxy(15,16);
    	cout<<"Kontroluj weza by rosl jak najdluzszy  "<<char(1)<<endl;
    	gotoxy(15,17);
        cout<<""<<endl<<endl<<endl;
        cout<<"                  Press any key to continue game ... ";
    		
       	getch();
    	do
    	{
    		p=0;
    		system("cls");
    		for(a=2;a<73;a++)
    		{
    			gotoxy(a,1); cout<<char(205)<<endl;
    			gotoxy(a,21); cout<<char(205)<<endl;
    		}
    		gotoxy(1,1); cout<<char(201)<<endl;
    		gotoxy(1,21); cout<<char(200)<<endl;
    		gotoxy(73,1); cout<<char(187)<<endl;
    		gotoxy(73,21); cout<<char(188)<<endl;
    
    		for(a=2;a<21;a++)
    		{
    			gotoxy(1,a); cout<<char(186)<<endl;
    			gotoxy(73,a); cout<<char(186)<<endl;
    		}
    		gotoxy(37,1); cout<<p<<endl;
    
    		do
    		{
    		    gotoxy(25,8); cout<<"Wybierz poziom trudnosci";        
    			gotoxy(30,10); cout<<"Level (1-5) : "<<endl;
    			gotoxy(44,10); speed1[0]=getch(); putch(speed1[0]);
    			speed=atoi(speed1);
    		}while(speed>5&&speed<=0);
    		gotoxy(25,8); cout<<"                                "<<endl;
    		gotoxy(30,10); cout<<"                   "<<endl;
    
    		opt='0';
    		opt_ex='n';
    		biji.ok=1;
    
    		znak='w';
    		b=0;
    		for(a=0;a<1000;a++)
    		{
    			snake[a].w=0;
    			snake[a].x=0;
    			snake[a].y=0;
    		}
    		snake[b].w=1;
    
    		x=23;
    		y=20;
    		do
    		{
    			if(biji.ok==1)
    			{
    				biji.x=(rand() % 70)+2;
    				biji.y=(rand() % 18)+2;
    				biji.ok=0;
    			}
    			for(a=0;a<1000;a++)
    			{
    				if(snake[a].w==1)
    				{
    					gotoxy(snake[a].x,snake[a].y); cout<<char(0)<<endl;
    				}
    			}
    			for(a=999;a>0;a--)
    			{
    				if(snake[a].w==1&&snake[a-1].w==1)
    				{
    					snake[a].x=snake[a-1].x;
    					snake[a].y=snake[a-1].y;
    				}
    			}
    			snake[0].x=x;
    			snake[0].y=y;
    
    			for(a=0;a<1000;a++)
    			{
    				if(snake[a].w==1)
    				{
    					gotoxy(snake[a].x,snake[a].y); cout<<char(1)<<endl;
    				}
    			}
    			gotoxy(biji.x,biji.y); cout<<char(21)<<endl;
    
    			if(kbhit())
    			{
    				opt=getch();
    			}
    
    			if(opt=='w')
    			{
    				if(znak=='s')
    				{
    					opt=znak;
    				}
    				else
    				{
    					y=y-1;
    				}
    			}
    			if(opt=='s')
    			{
    				if(znak=='w')
    				{
    					opt=znak;
    				}
    				else
    				{
    					y=y+1;
    				}
    			}
    			if(opt=='d')
    			{
    				if(znak=='a')
    				{
    					opt=znak;
    				}
    				else
    				{
    					x=x+1;
    				}
    			}
    			if(opt=='a')
    			{
    				if(znak=='d')
    				{
    					opt=znak;
    				}
    				else
    				{
    					x=x-1;
    				}
    			}
    			znak=opt;
    
    			for(a=1;a<1000;a++)
    			{
    				if(snake[a].w==1)
    				{
    					if(x==snake[a].x&&y==snake[a].y)
    					{
    						for(zz=0;zz<10;zz++)
    						{
    							if(zz%2==0)
    							{
    								for(z=0;z<1000;z++)
    								{
    									if(snake[z].w==1)
    									{
    										gotoxy(snake[z].x,snake[z].y); cout<<' '<<endl;
    									}
    								}
    							}
    							else
    							{
    								for(z=0;z<1000;z++)
    								{
    									if(snake[z].w==1)
    									{
    										gotoxy(snake[z].x,snake[z].y); cout<<char(2)<<endl;
    									}
    								}
    							}
    							Sleep(200);
    						}
    						gotoxy(30,15); cout<<"Gra skonczona !!!"<<endl;
    						cout<<char(7)<<endl;
    						opt=char(27);
    
    					}
    				}
    			}
    
    			if(x==1||x==73||y==21||y==1)
    			{
    				for(zz=0;zz<10;zz++)
    						{
    							if(zz%2==0)
    							{
    								for(z=0;z<1000;z++)
    								{
    									if(snake[z].w==1)
    									{
    										gotoxy(snake[z].x,snake[z].y); cout<<' '<<endl;
    									}
    								}
    							}
    							else
    							{
    								for(z=0;z<1000;z++)
    								{
    									if(snake[z].w==1)
    									{
    										gotoxy(snake[z].x,snake[z].y); cout<<char(2)<<endl;
    									}
    								}
    							}
    							Sleep(100);
    						}
    				gotoxy(30,15); cout<<"Gra skonczona !!!"<<endl;
    				cout<<char(7)<<endl;
    				opt=char(27);
    			}
    			if(x==biji.x&&y==biji.y)
    			{
    
    				gotoxy(x,y); cout<<' '<<endl;
    				biji.ok=1;
    				p=p+speed;
    				b=b+1;
    				gotoxy(37,1); 
    				cout<<p<<endl;
    				snake[b].w=1;
    			}
    
    			Sleep(170/speed);
    		}while(opt!=char(27));
    
    		do
    		{
    		    system("cls");
    		    gotoxy(30,12);
    		    cout<<"Zdobyles "<<p<<" punktow."; 
    			gotoxy(27,23); cout<<"Replay? [Y]es / [N]o : "<<endl;
    			gotoxy(50,23); opt_ex=getch();
    			if(opt_ex=='y'||opt_ex=='Y'||opt_ex=='n'||opt_ex=='N')
    			{
    				opt_cor=1;
    			}
    			else
    			{
    				opt_cor=0;
    			}
    		}while(opt_cor==0);
    
    
    	}while(opt_ex=='y'||opt_ex=='Y');
    	cout<<endl;
    	MessageBox(NULL,"Konrad Ignerowicz\n nr indexu 147433\n","Informatyka: Zaliczenie gry",
    	                  MB_OK | MB_SYSTEMMODAL|MB_ICONINFORMATION|MB_SERVICE_NOTIFICATION|MB_RTLREADING);
    	}
  • #2 2232045
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Nie rozumiem pytania, czy chcesz uruchomić konsole na pełnym ekranie?
  • #3 2232282
    one_eddie
    Poziom 25  
    Posty: 973
    Pomógł: 62
    Ocena: 14
    Z tego co wiem sluzy do tego specialny przycisk w windowsie. Raczej nie mozna zrobic tego programowo, tzn ja nigdy nie widzialem.

    Efekt pelnego ekranu uzyskuje sie tworzac specialny plik pif, ktory bedzie mial informacje o tym czy okno ma pojsc w tryb TXT czy okienkowy.
  • #4 2235305
    K_o_N_z_I
    Poziom 17  
    Posty: 336
    Pomógł: 13
    Ocena: 55
    jak to nie rozumiecie, normalnie, nie urachmialiscie nigdy zadnej gierki typu tetris albo snake albo box czy arkanoid ???

    Wiec jak uruchamiacie plik *.exe ze swoja gierka/programem to od razu przechodzi w tryb pelnoekranowy i wlasnie to chce u siebie w grze zastosowac, bo ten "magiczny" przycisk do maksymalizacji ekranu to tylko powieksza mi okno ale nie na pelny ekran!!!
  • #5 2235632
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Jest udokumentowana funkcja GetConsoleDisplayMode do sprawdzania czy jest fullscreen czy nie, ale MSDN nic nie mówi o zmianie tego trybu. Szukając w googlach znalazłem wzmianke o nieudokumentowanej funkcji SetConsoleDisplayMode, kod jest w VB ale funkcja jest funkcją, więc raczej też będzie dostępna, w najgorszym wypadku trzeba będzie ją zadeklarować jako funkcje zewnętrzną z biblioteki DLL. http://www.ex-designz.net/apidetail.asp?api_id=426
  • #6 2236316
    Akane
    Poziom 27  
    Posty: 638
    Pomógł: 144
    Ocena: 33
    etam, jest:
    SetConsoleDisplayMode
    The SetConsoleDisplayMode function sets the display mode of the specified console screen buffer.
    BOOL SetConsoleDisplayMode(
      HANDLE hConsoleOutput,
      DWORD dwFlags,
      PCOORD lpNewScreenBufferDimensions
    );
    - hConsoleOutput - [in] Handle to a console screen buffer.
    - dwFlags - [in] Display mode of the console. This parameter can be one or more of the following values. Value Meaning
    CONSOLE_FULLSCREEN_MODE Text is displayed in full-screen mode.
    CONSOLE_WINDOWED_MODE Text is displayed in a console window.

    - lpNewScreenBufferDimensions - Pointer to a COORD structure that receives the new dimensions of the screen buffer.

    Requirements
    Client: Requires Windows XP.
    Server: Requires Windows Server 2003.
    Header: Declared in Wincon.h; include Windows.h.
    Library: Use Kernel32.lib
  • #7 2236481
    K_o_N_z_I
    Poziom 17  
    Posty: 336
    Pomógł: 13
    Ocena: 55
    no tak, tylko jak to władować do mojego programu, próbuję ale coś nie wychodzi,
  • #8 2298539
    vampirespire
    Poziom 12  
    Posty: 21
    jak juz uruchomisz gierke to klknij prawym na pasek i we wlasciwosciach jest cos takiego. tyle ze to nie w programie wiec rozwiazanie nie jest pelne

Podsumowanie tematu

✨ Dyskusja dotyczy problemu uruchomienia gry konsolowej (np. Snake) w trybie pełnoekranowym w środowisku Dev-C++ 4.9.9.0 na Windows. Użytkownik chce, aby program automatycznie przechodził w tryb pełnoekranowy konsoli, a nie tylko powiększał okno. Wskazano, że standardowo Windows umożliwia pełny ekran konsoli za pomocą specjalnego pliku PIF lub ręcznej zmiany właściwości okna, jednak nie jest to rozwiązanie programowe. Wspomniano o funkcji WinAPI SetConsoleDisplayMode, która pozwala na ustawienie trybu wyświetlania konsoli na pełnoekranowy (CONSOLE_FULLSCREEN_MODE) lub okienkowy (CONSOLE_WINDOWED_MODE). Funkcja ta jest dostępna od Windows XP i wymaga dołączenia nagłówka Windows.h oraz biblioteki Kernel32.lib. Użytkownik ma trudności z integracją tej funkcji w swoim programie. Nie znaleziono oficjalnej dokumentacji zmiany trybu konsoli poza tą funkcją, a inne metody są nieudokumentowane lub ograniczone do ręcznych ustawień systemowych.
Wygenerowane przez model językowy.
REKLAMA