| 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) */
|
|---|
| 36 | static 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])
|
|---|