source: trunk/examples/life/patterns.cpp

Last change on this file was 2, checked in by dmik, 20 years ago

Imported xplatform parts of the official release 3.3.1 from Trolltech

  • Property svn:keywords set to Id
File size: 8.3 KB
Line 
1/****************************************************************************
2** $Id: patterns.cpp 2 2005-11-16 15:49:26Z dmik $
3**
4** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
5**
6** This file is part of an example program for Qt. This example
7** program may be used, distributed and modified without limitation.
8**
9*****************************************************************************/
10
11/****************************************************************************
12 *
13 * Patterns for life. Adapted from xlock; original copyright notice below.
14 *
15 * Copyright (c) 1988-91 by Patrick J. Naughton.
16 *
17 * Permission to use, copy, modify, and distribute this software and its
18 * documentation for any purpose and without fee is hereby granted,
19 * provided that the above copyright notice appear in all copies and that
20 * both that copyright notice and this permission notice appear in
21 * supporting documentation.
22 *
23 * This file is provided AS IS with no warranties of any kind. The author
24 * shall have no liability with respect to the infringement of copyrights,
25 * trade secrets or any patents by this file or any part thereof. In no
26 * event will the author be liable for any lost revenue or profits or
27 * other special, indirect and consequential damages.
28 *****************************************************************************/
29
30//#include <qglobal.h>
31
32
33#define NUMPTS 63
34/* Patterns have < NUMPTS pts (and should have a size of <= 32x32,
35 the Gun is an exception) */
36static int patterns[][2 * NUMPTS + 1] = {
37 { /* GLIDER GUN */
38 6, -4,
39 5, -3, 6, -3,
40 -6, -2, -5, -2, 8, -2, 9, -2, 16, -2,
41 -7, -1, 8, -1, 9, -1, 10, -1, 16, -1, 17, -1,
42 -18, 0, -17, 0, -8, 0, 8, 0, 9, 1,
43 -17, 1, -8, 1, 5, 1, 6, 1,
44 -8, 2, 6, 2,
45 -7, 3,
46 -6, 4, -5, 4,
47 127
48 },
49 { /* FIGURE EIGHT */
50 -3, -3, -2, -3, -1, -3,
51 -3, -2, -2, -2, -1, -2,
52 -3, -1, -2, -1, -1, -1,
53 0, 0, 1, 0, 2, 0,
54 0, 1, 1, 1, 2, 1,
55 0, 2, 1, 2, 2, 2,
56 127
57 },
58 { /* PULSAR */
59 -2, -1, -1, -1, 0, -1, 1, -1, 2, -1,
60 -2, 0, 2, 0,
61 127
62 },
63 { /* BARBER POLE P2 */
64 -6, -6, -5, -6,
65 -6, -5, -4, -5,
66 -4, -3, -2, -3,
67 -2, -1, 0, -1,
68 0, 1, 2, 1,
69 2, 3, 4, 3,
70 5, 4,
71 4, 5, 5, 5,
72 127
73 },
74 { /* ACHIM P5 */
75 -6, -6, -5, -6,
76 -6, -5,
77 -4, -4,
78 -4, -3, -2, -3,
79 -2, -1, 0, -1,
80 0, 1, 2, 1,
81 2, 3, 3, 3,
82 5, 4,
83 4, 5, 5, 5,
84 127
85 },
86 { /* HERTZ P4 */
87 -2, -5, -1, -5,
88 -2, -4, -1, -4,
89 -7, -2, -6, -2, -2, -2, -1, -2, 0, -2, 1, -2, 5, -2, 6, -2,
90 -7, -1, -5, -1, -3, -1, 2, -1, 4, -1, 6, -1,
91 -5, 0, -3, 0, -2, 0, 2, 0, 4, 0,
92 -7, 1, -5, 1, -3, 1, 2, 1, 4, 1, 6, 1,
93 -7, 2, -6, 2, -2, 2, -1, 2, 0, 2, 1, 2, 5, 2, 6, 2,
94 -2, 4, -1, 4,
95 -2, 5, -1, 5,
96 127
97 },
98 { /* TUMBLER */
99 -2, -3, -1, -3, 1, -3, 2, -3,
100 -2, -2, -1, -2, 1, -2, 2, -2,
101 -1, -1, 1, -1,
102 -3, 0, -1, 0, 1, 0, 3, 0,
103 -3, 1, -1, 1, 1, 1, 3, 1,
104 -3, 2, -2, 2, 2, 2, 3, 2,
105 127
106 },
107 { /* PULSE1 P4*/
108 0, -3, 1, -3,
109 -2, -2, 0, -2,
110 -3, -1, 3, -1,
111 -2, 0, 2, 0, 3, 0,
112 0, 2, 2, 2,
113 1, 3,
114 127
115 },
116 { /* SHINING FLOWER P5 */
117 -1, -4, 0, -4,
118 -2, -3, 1, -3,
119 -3, -2, 2, -2,
120 -4, -1, 3, -1,
121 -4, 0, 3, 0,
122 -3, 1, 2, 1,
123 -2, 2, 1, 2,
124 -1, 3, 0, 3,
125 127
126 },
127 { /* PULSE2 P6 */
128 0, -4, 1, -4,
129 -4, -3, -3, -3, -1, -3,
130 -4, -2, -3, -2, 0, -2, 3, -2,
131 1, -1, 3, -1,
132 2, 0,
133 1, 2, 2, 2,
134 1, 3, 2, 3,
135 127
136 },
137 { /* PINWHEEL, CLOCK P4 */
138 -2, -6, -1, -6,
139 -2, -5, -1, -5,
140 -2, -3, -1, -3, 0, -3, 1, -3,
141 -3, -2, -1, -2, 2, -2, 4, -2, 5, -2,
142 -3, -1, 1, -1, 2, -1, 4, -1, 5, -1,
143 -6, 0, -5, 0, -3, 0, 0, 0, 2, 0,
144 -6, 1, -5, 1, -3, 1, 2, 1,
145 -2, 2, -1, 2, 0, 2, 1, 2,
146 0, 4, 1, 4,
147 0, 5, 1, 5,
148 127
149 },
150 { /* PENTADECATHOLON */
151 -5, 0, -4, 0, -3, 0, -2, 0, -1, 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0,
152 127
153 },
154 { /* PISTON */
155 1, -3, 2, -3,
156 0, -2,
157 -10, -1, -1, -1,
158 -11, 0, -10, 0, -1, 0, 9, 0, 10, 0,
159 -1, 1, 9, 1,
160 0, 2,
161 1, 3, 2, 3,
162 127
163 },
164 { /* PISTON2 */
165 -3, -5,
166 -14, -4, -13, -4, -4, -4, -3, -4, 13, -4, 14, -4,
167 -14, -3, -13, -3, -5, -3, -4, -3, 13, -3, 14, -3,
168 -4, -2, -3, -2, 0, -2, 1, -2,
169 -4, 2, -3, 2, 0, 2, 1, 2,
170 -14, 3, -13, 3, -5, 3, -4, 3, 13, 3, 14, 3,
171 -14, 4, -13, 4, -4, 4, -3, 4, 13, 4, 14, 4,
172 -3, 5,
173 127
174 },
175 { /* SWITCH ENGINE */
176 -12, -3, -10, -3,
177 -13, -2,
178 -12, -1, -9, -1,
179 -10, 0, -9, 0, -8, 0,
180 13, 2, 14, 2,
181 13, 3,
182 127
183 },
184 { /* GEARS (gear, flywheel, blinker) */
185 -1, -4,
186 -1, -3, 1, -3,
187 -3, -2,
188 2, -1, 3, -1,
189 -4, 0, -3, 0,
190 2, 1,
191 -2, 2, 0, 2,
192 0, 3,
193
194 5, 3,
195 3, 4, 4, 4,
196 5, 5, 6, 5,
197 4, 6,
198
199 8, 0,
200 8, 1,
201 8, 2,
202 127
203 },
204 { /* TURBINE8 */
205 -4, -4, -3, -4, -2, -4, -1, -4, 0, -4, 1, -4, 3, -4, 4, -4,
206 -4, -3, -3, -3, -2, -3, -1, -3, 0, -3, 1, -3, 3, -3, 4, -3,
207 3, -2, 4, -2,
208 -4, -1, -3, -1, 3, -1, 4, -1,
209 -4, 0, -3, 0, 3, 0, 4, 0,
210 -4, 1, -3, 1, 3, 1, 4, 1,
211 -4, 2, -3, 2,
212 -4, 3, -3, 3, -1, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3,
213 -4, 4, -3, 4, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4,
214 127
215 },
216 { /* P16 */
217 -3, -6, 1, -6, 2, -6,
218 -3, -5, 0, -5, 3, -5,
219 3, -4,
220 -5, -3, -4, -3, 1, -3, 2, -3, 5, -3, 6, -3,
221 -6, -2, -3, -2,
222 -6, -1, -3, -1,
223 -5, 0, 5, 0,
224 3, 1, 6, 1,
225 3, 2, 6, 2,
226 -6, 3, -5, 3, -2, 3, -1, 3, 4, 3, 5, 3,
227 -3, 4,
228 -3, 5, 0, 5, 3, 5,
229 -2, 6, -1, 6, 3, 6,
230 127
231 },
232 { /* PUFFER */
233 1, -9,
234 2, -8,
235 -2, -7, 2, -7,
236 -1, -6, 0, -6, 1, -6, 2, -6,
237 -2, -2,
238 -1, -1, 0, -1,
239 0, 0,
240 0, 1,
241 -1, 2,
242 1, 5,
243 2, 6,
244 -2, 7, 2, 7,
245 -1, 8, 0, 8, 1, 8, 2, 8,
246 127
247 },
248 { /* ESCORT */
249 3, -8,
250 4, -7,
251 -2, -6, 4, -6,
252 -1, -5, 0, -5, 1, -5, 2, -5, 3, -5, 4, -5,
253 -5, -1, -4, -1, -3, -1, -2, -1, -1, -1, 0, -1,
254 1, -1, 2, -1, 3, -1, 4, -1, 5, -1, 6, -1,
255 -6, 0, 6, 0,
256 6, 1,
257 5, 2,
258 3, 4,
259 4, 5,
260 -2, 6, 4, 6,
261 -1, 7, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7,
262 127
263 },
264 { /* DART SPEED 1/3 */
265 3, -7,
266 2, -6, 4, -6,
267 1, -5, 2, -5,
268 4, -4,
269 0, -3, 4, -3,
270 -3, -2, 0, -2,
271 -4, -1, -2, -1, 1, -1, 2, -1, 3, -1, 4, -1,
272 -5, 0, -2, 0,
273 -4, 1, -2, 1, 1, 1, 2, 1, 3, 1, 4, 1,
274 -3, 2, 0, 2,
275 0, 3, 4, 3,
276 4, 4,
277 1, 5, 2, 5,
278 2, 6, 4, 6,
279 3, 7,
280 127
281 },
282 { /* PERIOD 4 SPEED 1/2 */
283 -3, -5,
284 -4, -4, -3, -4, -2, -4, -1, -4, 0, -4,
285 -5, -3, -4, -3, 0, -3, 1, -3, 3, -3,
286 -4, -2, 4, -2,
287 -3, -1, -2, -1, 1, -1, 3, -1,
288 -3, 1, -2, 1, 1, 1, 3, 1,
289 -4, 2, 4, 2,
290 -5, 3, -4, 3, 0, 3, 1, 3, 3, 3,
291 -4, 4, -3, 4, -2, 4, -1, 4, 0, 4,
292 -3, 5,
293 127
294 },
295 { /* ANOTHER PERIOD 4 SPEED 1/2 */
296 -4, -7, -3, -7, -1, -7, 0, -7, 1, -7, 2, -7, 3, -7, 4, -7,
297 -5, -6, -4, -6, -3, -6, -2, -6, 5, -6,
298 -6, -5, -5, -5,
299 -5, -4, 5, -4,
300 -4, -3, -3, -3, -2, -3, 0, -3,
301 -2, -2,
302 -2, -1,
303 -1, 0,
304 -2, 1,
305 -2, 2,
306 -4, 3, -3, 3, -2, 3, 0, 3,
307 -5, 4, 5, 4,
308 -6, 5, -5, 5,
309 -5, 6, -4, 6, -3, 6, -2, 6, 5, 6,
310 -4, 7, -3, 7, -1, 7, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7,
311 127
312 },
313 { /* SMALLEST KNOWN PERIOD 3 SPACESHIP SPEED 1/3 */
314 0, -8,
315 -1, -7, 1, -7,
316 -1, -6, 1, -6,
317 -1, -5,
318 -2, -3, -1, -3,
319 -1, -2, 1, -2,
320 -2, -1, 0, -1,
321 -2, 0, -1, 0, 0, 0,
322 -1, 2, 1, 2,
323 -1, 3, 0, 3,
324 0, 4,
325 0, 5, 2, 5,
326 0, 6, 2, 6,
327 1, 7,
328 127
329 },
330 { /* TURTLE SPEED 1/3 */
331 -4, -5, -3, -5, -2, -5, 6, -5,
332 -4, -4, -3, -4, 0, -4, 2, -4, 3, -4, 5, -4, 6, -4,
333 -2, -3, -1, -3, 0, -3, 5, -3,
334 -4, -2, -1, -2, 1, -2, 5, -2,
335 -5, -1, 0, -1, 5, -1,
336 -5, 0, 0, 0, 5, 0,
337 -4, 1, -1, 1, 1, 1, 5, 1,
338 -2, 2, -1, 2, 0, 2, 5, 2,
339 -4, 3, -3, 3, 0, 3, 2, 3, 3, 3, 5, 3, 6, 3,
340 -4, 4, -3, 4, -2, 4, 6, 4,
341 127
342 },
343 { /* SMALLEST KNOWN PERIOD 5 SPEED 2/5 */
344 1, -7, 3, -7,
345 -2, -6, 3, -6,
346 -3, -5, -2, -5, -1, -5, 4, -5,
347 -4, -4, -2, -4,
348 -5, -3, -4, -3, -1, -3, 0, -3, 5, -3,
349 -4, -2, -3, -2, 0, -2, 1, -2, 2, -2, 3, -2, 4, -2,
350 -4, 2, -3, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2,
351 -5, 3, -4, 3, -1, 3, 0, 3, 5, 3,
352 -4, 4, -2, 4,
353 -3, 5, -2, 5, -1, 5, 4, 5,
354 -2, 6, 3, 6,
355 1, 7, 3, 7,
356 127
357 },
358 { /* SYM PUFFER */
359 1, -4, 2, -4, 3, -4, 4, -4,
360 0, -3, 4, -3,
361 4, -2,
362 -4, -1, -3, -1, 0, -1, 3, -1,
363 -4, 0, -3, 0, -2, 0,
364 -4, 1, -3, 1, 0, 1, 3, 1,
365 4, 2,
366 0, 3, 4, 3,
367 1, 4, 2, 4, 3, 4, 4, 4,
368 127
369 },
370 { /* ], NEAR SHIP, PI HEPTOMINO */
371 -2, -1, -1, -1, 0, -1,
372 1, 0,
373 -2, 1, -1, 1, 0, 1,
374 127
375 },
376 { /* R PENTOMINO */
377 0, -1, 1, -1,
378 -1, 0, 0, 0,
379 0, 1,
380 127
381 }
382};
383
384#define NPATS (sizeof patterns / sizeof patterns[0])
Note: See TracBrowser for help on using the repository browser.