Piotras Temat założony przez niniejszego użytkownika |
Program nie wyswietla funkcji od razu i czeka na uzytkownika » 2019-09-23 19:50:43 Hej! Moj nauczyciel informatyki pokazał grupie gre - "Samotnik". Stwierdziłem ze sprobuje napisac ja samemu. Wszystko dziala jak nalezy, z tym ze po wybraniu planszy program nie wyswietla jej od razu i trzeba nacisnac klawisz. Czy ktos moze mi to rozjasnic? Dziekuje :)
#include<iostream> #include<winbgim.h>
using namespace std;
int tablica[ 7 ][ 7 ]; int xp, yp, xk, yk; int ip, jp, ik, jk; int znakp; int x = 200, y = 70; void mouse_down( int xm, int ym ); void mouse_up( int xm, int ym ); void plansza(); void wybor(); void start2(); void start1(); void start3();
char z;
int main() { initwindow( 800, 600 ); registermousehandler( WM_LBUTTONDOWN, mouse_down ); registermousehandler( WM_LBUTTONUP, mouse_up ); setcolor( YELLOW ); setbkcolor( BLUE ); cleardevice(); outtextxy( 220, 300, "Wybierz plansze [1] , [2] lub [3]" ); wybor(); return 0; } void mouse_down( int xm, int ym ) { jp =( xm -( x - 35 ) ) / 70; ip =( ym -( y - 35 ) ) / 70; znakp = true; plansza(); }
void mouse_up( int xm, int ym ) { jk =( xm -( x - 35 ) ) / 70; ik =( ym -( y - 35 ) ) / 70; znakp = false; if( tablica[ ip ][ jp ] == 1 && ip - ik == 2 && tablica[ ip - 1 ][ jp ] == 1 && tablica[ ik ][ jk ] == 0 ) { tablica[ ip ][ jp ] = 0; tablica[ ip - 1 ][ jp ] = 0; tablica[ ik ][ jk ] = 1; plansza(); } if( tablica[ ip ][ jp ] == 1 && ik - ip == 2 && tablica[ ip + 1 ][ jp ] == 1 && tablica[ ik ][ jk ] == 0 ) { tablica[ ip ][ jp ] = 0; tablica[ ip + 1 ][ jp ] = 0; tablica[ ik ][ jk ] = 1; plansza(); } if( tablica[ ip ][ jp ] == 1 && jp - jk == 2 && tablica[ ip ][ jp - 1 ] == 1 && tablica[ ik ][ jk ] == 0 ) { tablica[ ip ][ jp ] = 0; tablica[ ip ][ jp - 1 ] = 0; tablica[ ik ][ jk ] = 1; plansza(); } if( tablica[ ip ][ jp ] == 1 && jk - jp == 2 && tablica[ ip ][ jp + 1 ] == 1 && tablica[ ik ][ jk ] == 0 ) { tablica[ ip ][ jp ] = 0; tablica[ ip ][ jp + 1 ] = 0; tablica[ ik ][ jk ] = 1; plansza(); } }
void plansza() { int i, j; for( i = 0; i < 7; i++ ) { for( j = 0; j < 7; j++ ) { if( tablica[ i ][ j ] == 1 ) { circle( x + j * 70, y + i * 70, 30 ); setfillstyle( 1, RED ); floodfill( x + j * 70, y + i * 70, YELLOW ); if( i == ip && j == jp && znakp ) { circle( x + j * 70, y + i * 70, 30 ); setfillstyle( 1, COLOR( 255, 157, 255 ) ); floodfill( x + j * 70, y + i * 70, YELLOW ); } } if( tablica[ i ][ j ] == 0 ) { circle( x + j * 70, y + i * 70, 30 ); setfillstyle( 1, BLUE ); floodfill( x + j * 70, y + i * 70, YELLOW ); } } } }
void start2() { int i, j; for( i = 0; i < 7; i++ ) { for( j = 0; j < 7; j++ ) { tablica[ i ][ j ] = 1; } } tablica[ 3 ][ 3 ] = 0; tablica[ 0 ][ 0 ] = 2; tablica[ 1 ][ 0 ] = 2; tablica[ 0 ][ 1 ] = 2; tablica[ 1 ][ 1 ] = 2; tablica[ 0 ][ 6 ] = 2; tablica[ 0 ][ 5 ] = 2; tablica[ 1 ][ 6 ] = 2; tablica[ 5 ][ 1 ] = 2; tablica[ 6 ][ 6 ] = 2; tablica[ 6 ][ 5 ] = 2; tablica[ 5 ][ 6 ] = 2; tablica[ 1 ][ 5 ] = 2; tablica[ 6 ][ 0 ] = 2; tablica[ 6 ][ 1 ] = 2; tablica[ 5 ][ 0 ] = 2; tablica[ 5 ][ 5 ] = 2; }
void start1() { int i, j; for( i = 0; i < 7; i++ ) { for( j = 0; j < 7; j++ ) { tablica[ i ][ j ] = 1; } } tablica[ 3 ][ 3 ] = 0; tablica[ 0 ][ 0 ] = 2; tablica[ 1 ][ 0 ] = 2; tablica[ 0 ][ 1 ] = 2; tablica[ 0 ][ 6 ] = 2; tablica[ 0 ][ 5 ] = 2; tablica[ 1 ][ 6 ] = 2; tablica[ 6 ][ 6 ] = 2; tablica[ 6 ][ 5 ] = 2; tablica[ 5 ][ 6 ] = 2; tablica[ 6 ][ 0 ] = 2; tablica[ 6 ][ 1 ] = 2; tablica[ 5 ][ 0 ] = 2; }
void start3() { int i, j; for( i = 0; i < 7; i++ ) { for( j = 0; j < 7; j++ ) { tablica[ i ][ j ] = 1; } } tablica[ 3 ][ 3 ] = 0; }
void wybor() { if( getch() == 49 ) { do { cleardevice(); plansza(); start1(); } while( getch() != 27 ); } if( getch() == 50 ) { do { cleardevice(); plansza(); start2(); } while( getch() != 27 ); } if( getch() == 51 ) { do { cleardevice(); plansza(); start3(); } while( getch() != 27 ); } }
|
|
pekfos |
» 2019-09-23 19:57:52 if( getch() == 49 ) { do { cleardevice(); plansza(); start1(); } while( getch() != 27 ); } if( getch() == 50 ) { do { cleardevice(); plansza(); start2(); } while( getch() != 27 ); } if( getch() == 51 ) { do { cleardevice(); plansza(); start3(); } while( getch() != 27 ); } |
Każdy z tych warunków czeka na znak od użytkownika. |
|
Piotras Temat założony przez niniejszego użytkownika |
» 2019-09-23 20:00:16 No tak. Bo jest to warunek wyboru planszy. Z tym że nie rozumiem czemu nalezy wcisnac go 2 razy |
|
pekfos |
» 2019-09-23 20:14:43 Każdy z tych warunków niezależnie czeka na znak od użytkownika. Wczytaj znak raz i potem sprawdzaj różne opcje. |
|
Piotras Temat założony przez niniejszego użytkownika |
» 2019-09-23 20:18:08 Okej. Teraz rozumiem. Dzieki |
|
« 1 » |