#include "../config.h" #include "../pixel.h" #include "../util.h" #include "../random/prng.h" #include "snake.h" #include "../joystick.h" #define RANDOM8() (random8()) void snake(){ pixel pixels[64]; pixels[0] = (pixel){NUM_COLS/2, NUM_ROWS/2}; pixels[1] = (pixel){NUM_COLS/2, (NUM_ROWS/2)-1}; pixel * head = &pixels[1]; pixel * tail = &pixels[0]; pixel old_head; pixel apples[10]; unsigned char apple_num = 0; direction dir = up; clear_screen(0); unsigned char x=0, dead=0; while(1){ x++; old_head = *head; if(++head == pixels + 64) head = pixels; unsigned char dead_cnt=0; unsigned char apple_found = 0, j; for(j=0;jx > apples[j].x){ distx = head->x - apples[j].x; }else{ distx = apples[j].x - head->x; } if(head->y > apples[j].y){ disty = head->y - apples[j].y; }else{ disty = apples[j].y - head->y; } if ((distx + disty) < shortdist){ shortdist = distx + disty; nextapple = j; xy = (distx > disty)?1:0; } } if(xy){ dir = (apples[nextapple].x > head->x)?left:right; }else{ dir = (apples[nextapple].y > head->y)?down:up; } } } if( (apple_num<9) && ((RANDOM8()&0xff)<10) ){ pixel new_apple = (pixel){RANDOM8()%NUM_COLS,RANDOM8()%NUM_ROWS}; if(!get_pixel(new_apple)){ apples[apple_num++]=new_apple; } } if(!apple_found){ clearpixel(*tail); if(++tail == pixels + 64) tail = pixels; } }else{ while(tail != head){ clearpixel(*tail); if((++tail)>pixels+64) tail = pixels; wait (60); } break; } for(j=0;j