All pastes #549997 Raw Edit

Mine

public c v1 · immutable
·published 2007-06-08 08:53 UTC
rendered paste body
#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#include <dos.h>#include <string.h>#define up 0#define down 1#define left 2#define right 3struct segment {int dir, x, y;};struct segment segments[2520];int key, length = 1;int mx = 0, my = 0, i;void graphic(){int gdriver = DETECT, gmode, errorcode;initgraph (&gdriver, &gmode, "");errorcode = graphresult();if (errorcode != grOk)	{	clrscr ();	printf ("Graphics error: %s\n", grapherrormsg (errorcode));	printf ("Press any key to halt");	getch ();	exit (1);	}}void definedir(){switch (key){case 80: segments[0].dir = up; break; case 72: segments[0].dir = down; break; case 77: segments[0].dir = right; break; case 75: segments[0].dir = left; break;}}void movehead(){switch (segments[0].dir){case up:	{				segments[0].x;				segments[0].y++;				} break; case down:	{				segments[0].x;				segments[0].y--;				} break; case right:{				segments[0].x++;				segments[0].y;				} break; case left: {				segments[0].x--;				segments[0].y;				} break;}setcolor (7);circle (segments[0].x*10, segments[0].y*10, 5);}void movebody(){segments[length].x = segments[length-1].x;segments[length].y = segments[length-1].y;setcolor (0);circle (segments[length].x*10,segments[length].y*10,5);for (i = 1; i < length; i++)	{	segments[length-i].x = segments[length-1-i].x;	segments[length-i].y = segments[length-1-i].y;	setcolor (7);	circle (segments[length-i].x*10,segments[length-i].y*10,5);	}}void wallcrash(){if (segments[0].x*10 < 13 | segments[0].x*10 > 627 |		segments[0].y*10 < 13 | segments[0].y*10 > 397)		{		setfillstyle(1,4);		bar (10,400,629,479);		setcolor (15);		rectangle (12, 12, 627, 397);		outtextxy (240, 440, "Snake has crashed");		getch ();		closegraph ();		}}void selfcrash(){for (i = 1; i < length; i++)	if (segments[0].x == segments[length-i].x && segments[0].y == segments[length-i].y)		{		setfillstyle(1,4);		bar (0,400,639,479);		setcolor (15);		rectangle (12, 12, 627, 397);		outtextxy (240, 440, "Snake has crashed");		getch ();		closegraph ();		}}void checkmeal(){if (segments[0].x == mx && segments[0].y == my)	{	circle (mx*10, my*10, 5);	setfillstyle (1, 0);	floodfill (mx*10, my*10, 0);	mx = random(62);	my = random(39);	if (mx < 2) mx=+2;	if (mx == 62) mx--;	if (my < 2) my=+2;	if (my == 39) my--;	setcolor (13);	circle (mx*10,my*10,4);	setfillstyle (1,13);	floodfill (mx*10,my*10, 13);	length++;	}}void firstmeal(){mx = random(62);my = random(39);if (mx < 2) mx=+2;if (mx == 62) mx--;if (my < 2) my=+2;if (my == 39) my--;setcolor(13);circle(mx*10,my*10,4);setfillstyle(1,13);floodfill(mx*10,my*10, 13);}int main(){graphic();segments[0].x = 31;segments[0].y = 20;segments[0].dir = 0;rectangle (13, 13, 627, 397);getch();randomize();firstmeal();while (key != 27){if (kbhit()) key = getch();movebody();definedir();movehead();wallcrash();selfcrash();checkmeal();delay(150);}getch();closegraph();}