1 /*
2 ##########################################
3 #         TriMines version 1.3.0         #
4 #                                        #
5 #         gfx.c - deals with graphics.   #
6 #                                        #
7 ##########################################
8 */
9 
ShowBMP(SDL_Surface * image,SDL_Surface * screen,int x,int y)10 void ShowBMP(SDL_Surface *image, SDL_Surface *screen, int x, int y)
11 {
12 SDL_Rect dest;
13 
14 SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format, 11, 255, 241));
15 
16     /* Blit onto the screen surface.
17        The surfaces should not be locked at this point.
18      */
19     dest.x = x;
20     dest.y = y;
21     dest.w = image->w;
22     dest.h = image->h;
23     SDL_BlitSurface(image, NULL, screen, &dest);
24 
25     /* Update the changed portion of the screen */
26     SDL_UpdateRects(screen, 1, &dest);
27 }
28 
load_images()29 void load_images()
30 {
31 Ibutton = SDL_LoadBMP("/usr/local/share/trimines/triangles/button.bmp");
32 Ibutton2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/button2.bmp");
33 Iflag = SDL_LoadBMP("/usr/local/share/trimines/triangles/flag.bmp");
34 Iflag2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/flag2.bmp");
35 Ifalse = SDL_LoadBMP("/usr/local/share/trimines/triangles/false.bmp");
36 Ifalse2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/false2.bmp");
37 Iclicked = SDL_LoadBMP("/usr/local/share/trimines/triangles/clicked.bmp");
38 Iclicked2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/clicked2.bmp");
39 Iquestion = SDL_LoadBMP("/usr/local/share/trimines/triangles/question.bmp");
40 Iquestion2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/question2.bmp");
41 Imine = SDL_LoadBMP("/usr/local/share/trimines/triangles/mine.bmp");
42 Imine2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/mine2.bmp");
43 Iredmine = SDL_LoadBMP("/usr/local/share/trimines/triangles/redmine.bmp");
44 Iredmine2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/redmine2.bmp");
45 I1 = SDL_LoadBMP("/usr/local/share/trimines/triangles/1.bmp");
46 I1_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/1_2.bmp");
47 I2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/2.bmp");
48 I2_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/2_2.bmp");
49 I3 = SDL_LoadBMP("/usr/local/share/trimines/triangles/3.bmp");
50 I3_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/3_2.bmp");
51 I4 = SDL_LoadBMP("/usr/local/share/trimines/triangles/4.bmp");
52 I4_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/4_2.bmp");
53 I5 = SDL_LoadBMP("/usr/local/share/trimines/triangles/5.bmp");
54 I5_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/5_2.bmp");
55 I6 = SDL_LoadBMP("/usr/local/share/trimines/triangles/6.bmp");
56 I6_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/6_2.bmp");
57 I7 = SDL_LoadBMP("/usr/local/share/trimines/triangles/7.bmp");
58 I7_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/7_2.bmp");
59 I8 = SDL_LoadBMP("/usr/local/share/trimines/triangles/8.bmp");
60 I8_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/8_2.bmp");
61 I9 = SDL_LoadBMP("/usr/local/share/trimines/triangles/9.bmp");
62 I9_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/9_2.bmp");
63 I10 = SDL_LoadBMP("/usr/local/share/trimines/triangles/10.bmp");
64 I10_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/10_2.bmp");
65 I11 = SDL_LoadBMP("/usr/local/share/trimines/triangles/11.bmp");
66 I11_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/11_2.bmp");
67 I12 = SDL_LoadBMP("/usr/local/share/trimines/triangles/12.bmp");
68 I12_2 = SDL_LoadBMP("/usr/local/share/trimines/triangles/12_2.bmp");
69 
70 
71 Icounter0 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_0.bmp");
72 Icounter1 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_1.bmp");
73 Icounter2 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_2.bmp");
74 Icounter3 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_3.bmp");
75 Icounter4 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_4.bmp");
76 Icounter5 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_5.bmp");
77 Icounter6 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_6.bmp");
78 Icounter7 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_7.bmp");
79 Icounter8 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_8.bmp");
80 Icounter9 = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_9.bmp");
81 Icounterm = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_m.bmp");
82 Icounterclear = SDL_LoadBMP("/usr/local/share/trimines/counter/counter_clear.bmp");
83 
84 Imenu = SDL_LoadBMP("/usr/local/share/trimines/menu/menu.bmp");
85 Imenu_newgame = SDL_LoadBMP("/usr/local/share/trimines/menu/newgame.bmp");
86 Imenu_options = SDL_LoadBMP("/usr/local/share/trimines/menu/options.bmp");
87 Imenu_quit = SDL_LoadBMP("/usr/local/share/trimines/menu/quit.bmp");
88 Imenu_width = SDL_LoadBMP("/usr/local/share/trimines/menu/width.bmp");
89 Imenu_height = SDL_LoadBMP("/usr/local/share/trimines/menu/height.bmp");
90 Imenu_mines = SDL_LoadBMP("/usr/local/share/trimines/menu/mines.bmp");
91 
92 
93 Ipointer = SDL_LoadBMP("/usr/local/share/trimines/misc/pointer.bmp");
94 Ipointer2 = SDL_LoadBMP("/usr/local/share/trimines/misc/pointer2.bmp");
95 Ibar = SDL_LoadBMP("/usr/local/share/trimines/misc/bar.bmp");
96 Ibar2 = SDL_LoadBMP("/usr/local/share/trimines/misc/bar2.bmp");
97 Ismile = SDL_LoadBMP("/usr/local/share/trimines/misc/smile.bmp");
98 Ismile2 = SDL_LoadBMP("/usr/local/share/trimines/misc/smile2.bmp");
99 Ismile3 = SDL_LoadBMP("/usr/local/share/trimines/misc/smile3.bmp");
100 Ismile4 = SDL_LoadBMP("/usr/local/share/trimines/misc/smile4.bmp");
101 
102 loadimgs = 0;
103 }
104 
drawb(int q,int x,int y)105 void drawb(int q,int x, int y)
106 {
107 SDL_Surface *image, *image2;
108 int z;
109 
110 if ((board2[x][y] == 0) && (q != 16)){
111 image = Ibutton;
112 image2 = Ibutton2;
113 } else {
114 
115 
116 if ((board2[x][y] == 2) && (q != 16)){
117 image = Iflag;
118 image2 = Iflag2;
119 } else {
120 
121 if ((board2[x][y] == 3) && (q != 16)){
122 image = Iquestion;
123 image2 = Iquestion2;
124 } else {
125 
126 if ((board2[x][y] == 4) && (q != 16)){
127 image = Ifalse;
128 image2 = Ifalse2;
129 } else {
130 
131 switch (q)
132 {
133 	case 0: image = Iclicked;
134 		image2 = Iclicked2;
135 		break;
136 	case 1: image = I1;
137 		image2 = I1_2;
138 		break;
139 	case 2: image = I2;
140 		image2 = I2_2;
141 		break;
142 	case 3: image = I3;
143 		image2 = I3_2;
144 		break;
145 	case 4: image = I4;
146 		image2 = I4_2;
147 		break;
148 	case 5: image = I5;
149 		image2 = I5_2;
150 		break;
151 	case 6: image = I6;
152 		image2 = I6_2;
153 		break;
154 	case 7: image = I7;
155 		image2 = I7_2;
156 		break;
157 	case 8: image = I8;
158 		image2 = I8_2;
159 		break;
160 	case 9: image = I9;
161 		image2 = I9_2;
162 		break;
163 	case 10: image = I10;
164 		image2 = I10_2;
165 		break;
166 	case 11: image = I11;
167 		image2 = I11_2;
168 		break;
169 	case 12: image = I12;
170 		image2 = I12_2;
171 		break;
172 	case 13: image = Iredmine;
173 		image2 = Iredmine2;
174 		break;
175 	case 14: image = Imine;
176 		image2 = Imine2;
177 		break;
178 	//case 15: image = Iquestion;
179 		//image2 = Iquestion2;
180 		//break;
181 	case 16: image = Ipointer;
182 		image2 = Ipointer2;
183 		break;
184 
185 } // end switch
186 
187 
188 
189 }}}}
190 
191 
192 
193 
194 z = 0;
195 if ((y % 2) != 0){z = 1;}
196 
197 
198 if ((x % 2) == z){
199 ShowBMP(image, screen, x*12,y*20);
200 }
201 else
202 {
203 ShowBMP(image2, screen, x*12,y*20);
204 }
205 
206 
207 }
208 
draw_board()209 void draw_board()
210 {
211 int i,j;
212 
213 for (i=0;i < boardx;i++){
214 for (j=0;j < boardy;j++){drawb(board[i][j],i,j);}
215 }
216 
217 }
218 
drawcounter(int n,int posx,int posy)219 void drawcounter(int n,int posx, int posy)
220 {
221 SDL_Surface *p1, *p2, *p3, *p4;
222 int n1,n2,n3,num;
223 
224 
225 num = n;
226 if (num < 0){num = num * -1;}
227 
228 if (num > 99) {
229 n1 = num / 100;
230 n2 = (num / 10) % 10;
231 n3 = num % 10;
232 } else {
233 	if (num > 9) {
234 	n1 = 0;
235 	n2 = num / 10;
236 	n3 = num % 10;
237 	} else {
238 		n1 = 0;
239 		n2 = 0;
240 		n3 = num;
241 				}}
242 
243 
244 
245 if (n < 0){ShowBMP(Icounterm, screen, posx, posy);} else {ShowBMP(Icounterclear, screen, posx, posy);}
246 
247 
248 
249 switch (n1)
250 {
251 case 0: p2 = Icounter0; break;
252 case 1: p2 = Icounter1; break;
253 case 2: p2 = Icounter2; break;
254 case 3: p2 = Icounter3; break;
255 case 4: p2 = Icounter4; break;
256 case 5: p2 = Icounter5; break;
257 case 6: p2 = Icounter6; break;
258 case 7: p2 = Icounter7; break;
259 case 8: p2 = Icounter8; break;
260 case 9: p2 = Icounter9; break;
261 }
262 
263 switch (n2)
264 {
265 case 0: p3 = Icounter0; break;
266 case 1: p3 = Icounter1; break;
267 case 2: p3 = Icounter2; break;
268 case 3: p3 = Icounter3; break;
269 case 4: p3 = Icounter4; break;
270 case 5: p3 = Icounter5; break;
271 case 6: p3 = Icounter6; break;
272 case 7: p3 = Icounter7; break;
273 case 8: p3 = Icounter8; break;
274 case 9: p3 = Icounter9; break;
275 }
276 
277 switch (n3)
278 {
279 case 0: p4 = Icounter0; break;
280 case 1: p4 = Icounter1; break;
281 case 2: p4 = Icounter2; break;
282 case 3: p4 = Icounter3; break;
283 case 4: p4 = Icounter4; break;
284 case 5: p4 = Icounter5; break;
285 case 6: p4 = Icounter6; break;
286 case 7: p4 = Icounter7; break;
287 case 8: p4 = Icounter8; break;
288 case 9: p4 = Icounter9; break;
289 }
290 
291 
292 
293 ShowBMP(p2, screen, posx+15, posy);
294 ShowBMP(p3, screen, posx+30, posy);
295 ShowBMP(p4, screen, posx+45, posy);
296 
297 
298 
299 }
300