int main int argc char argv SDL_Surface screen molot pinck akula tor d

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
int main(int argc, char** argv)
{
SDL_Surface *screen, *molot, *pinck, *akula, *tor , *doska, *gvozd; // поверхности
SDL_Event event;
SDL_Rect dest_molot, dest_doska, dest_gvozd, kvadrat;
int go, flag=0;
SDL_Rect dstarea;
dstarea.x = 0;
dstarea.y = 0;
dstarea.w = scrwidth;
dstarea.h = scrheight;
/* Начальная инициализация */
if(SDL_Init(SDL_INIT_VIDEO)<0)
{
printf("Unable to init SDL: %s\n", SDL_GetError());
return 1;
}
screen = SDL_SetVideoMode(scrwidth, scrheight, scrdepth, SDL_ANYFORMAT);
if(!screen){
printf("Unable to set 600x400 video: %s\n", SDL_GetError());
return 1;
}
// рисуем предметы
pinck=SDL_LoadBMP("molot.bmp");
akula=SDL_LoadBMP("riba.bmp");
tor=SDL_LoadBMP("tor.bmp");
molot=pinck;
doska=SDL_LoadBMP("doska.bmp");
gvozd=SDL_LoadBMP("gvozd.bmp");
// первоначальные данные предметов
dest_doska.x=100;
dest_doska.y=50;
dest_molot.y=67;
dest_molot.x=350;
dest_gvozd.y=70;
dest_gvozd.x=157;
kvadrat.w=600;
kvadrat.h=400;
SDL_BlitSurface (gvozd, NULL, screen, &dest_gvozd); // наложение молота
SDL_BlitSurface (molot, NULL, screen, &dest_molot); // наложение молота
SDL_BlitSurface (doska, NULL, screen, &dest_doska);
while(go)
{
while(SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_KEYDOWN:
{
if (event.key.keysym.sym == SDLK_ESCAPE)
{
go = 0;
break;
}
if(event.key.keysym.sym == SDLK_1)
{
SDL_FillRect(screen, &dstarea, SDL_MapRGB(screen->format, 0, 0, 0));
SDL_BlitSurface (gvozd, NULL, screen, &dest_gvozd);
SDL_BlitSurface (doska, NULL, screen, &dest_doska);
molot=tor;
dest_molot.y=40;
dest_molot.x=350;
SDL_BlitSurface (molot, NULL, screen, &dest_molot);
SDL_Flip(screen);
}
if(event.key.keysym.sym == SDLK_2)
{
SDL_FillRect(screen, &dstarea, SDL_MapRGB(screen->format, 0, 0, 0));
SDL_BlitSurface (gvozd, NULL, screen, &dest_gvozd);
SDL_BlitSurface (doska, NULL, screen, &dest_doska);
molot=akula;
dest_molot.y=40;
dest_molot.x=290;
SDL_BlitSurface (molot, NULL, screen, &dest_molot);
SDL_Flip(screen);
}
if(event.key.keysym.sym == SDLK_3)
{
SDL_FillRect(screen, &dstarea, SDL_MapRGB(screen->format, 0, 0, 0));
SDL_BlitSurface (gvozd, NULL, screen, &dest_gvozd);
SDL_BlitSurface (doska, NULL, screen, &dest_doska);
molot=pinck;
dest_molot.y=67;
dest_molot.x=350;
SDL_BlitSurface (molot, NULL, screen, &dest_molot);
SDL_Flip(screen);
}
if (event.key.keysym.sym == SDLK_RETURN)
{
while((dest_gvozd.x+112)<dest_molot.x && (dest_gvozd.x+112)>dest_doska.x )
{
SDL_FillRect(screen, &dstarea, SDL_MapRGB(screen->format, 0, 0, 0));
SDL_BlitSurface (molot, NULL, screen, &dest_molot);
SDL_BlitSurface (gvozd, NULL, screen, &dest_gvozd);
dest_molot.x--;
SDL_BlitSurface (doska, NULL, screen, &dest_doska);
SDL_Delay(10);
SDL_Flip(screen); /* Принудительное обновление окна программы */
}
if((dest_gvozd.x+112)>dest_doska.x)
{
flag=20;
}
while((flag>0) && ((dest_gvozd.x+50)>dest_doska.x))
{
SDL_FillRect(screen, &dstarea, SDL_MapRGB(screen->format, 0, 0, 0));
SDL_BlitSurface (molot, NULL, screen, &dest_molot);
SDL_BlitSurface (gvozd, NULL, screen, &dest_gvozd);
dest_gvozd.x--;
dest_molot.x++;
flag--;
SDL_BlitSurface (doska, NULL, screen, &dest_doska);
SDL_Delay(1);
SDL_Flip(screen); /* Принудительное обновление окна программы */
}
flag=0;
}
}
}
}
SDL_Delay(1);
SDL_Flip(screen); /* Принудительное обновление окна программы */
}