Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string>
- #include "graphics.h"
- using namespace std;
- #define gora 72
- #define dol 80
- #define lewo 75
- #define prawo 77
- #define ESC 27
- #define F1 59
- #define S 83
- #define s 115
- #define U 85
- #define u 117
- static char* MENU_TEXTS[4] = {"START GRY", "USTAWIENIA", "KONIEC", "POMOC"};
- // id zaczyna sie od 0 i rosnie o 1 dla kolejnych pozycji
- #define ID_START 0
- #define ID_USTAWIENIA 1
- #define ID_KONIEC 2
- #define ID_POMOC 3
- char itoa_buff[15];
- string infobartext;
- int getkey(void)
- {
- int z = 0;
- if (kbhit())
- {
- z=getch();
- switch(z)
- {
- case 0:
- case 224:
- z=getch();
- }
- }
- return z;
- }
- void infobar(string text)
- {
- setcolor(WHITE);
- //setbkcolor(GREEN);
- outtextxy(5, 480-25, (char*)text.c_str()); // z jakiejs przyczyny outtextxy jako parametr potrzebuje char* nie const char*
- }
- int MENU(void){
- int choice = 0;
- int width = 100, height = 30;
- int posx = 640/2-(width/2); // srodek dla szerokosci width
- int posy = 200;
- int verticaloffset = 50; // odstep pomiedzy poczatkami kolejnych pozycji menu
- int heightoffset = -8; // przesuniecie ramki wzgledem textu tak aby text byl w srodku ramki w osi OY
- int sr; // zmienna pomocnicza do wyznaczania srodka tekstu
- int key = 0; // przechowywanie id wcisnietego klawisza
- while(1)
- {
- for(int i=0; i<4; i++)
- {
- if (choice == i)
- {
- setcolor(GREEN);
- setfillstyle(SOLID_FILL,YELLOW);
- }
- else
- {
- setcolor(BLACK);
- setfillstyle(SOLID_FILL,BLACK);
- }
- rectangle(posx, posy+heightoffset+verticaloffset*i, posx+width, posy+height+heightoffset+verticaloffset*i);
- floodfill(posx+5,posy+heightoffset+5+verticaloffset*i, GREEN);
- }
- for(int i=0; i<4; i++)
- {
- setcolor(WHITE);
- //setbkcolor(GREEN);
- sr = textwidth(MENU_TEXTS[i]);
- sr = width-sr; // obliczenie srodka
- outtextxy(posx+(sr/2), posy+verticaloffset*i, MENU_TEXTS[i]);
- }
- itoa(key, itoa_buff, 10);
- infobartext = "Klawisz: ";
- infobartext.append(itoa_buff);
- infobar(infobartext);
- key = getch();
- switch(key)
- {
- case(80):
- choice = choice < 3 ? choice+1 : choice;
- break;
- case(72):
- choice = choice > 0 ? choice-1 : choice;
- break;
- }
- }
- return 0;
- }
- int main ()
- {
- // inicjowanie grafiki, okienko 640 x 480
- initwindow(640, 480);
- MENU();
- getch();
- closegraph();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement