#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "GrWin.h"

/* 犬を動かす(サブルーチン化） */

int dog(float x, float y, float size, int c, int cnt) 
{
  float d;

  /* アタマ */
  GWxpie(x-size, y-size*1.25, x+size, y+size*1.25, 0.5, 0.75, c);
	
 /* 鼻 */
  GWscircle(x-size*1.1, y, x-size*0.9, y+size*0.25, 0);
	
 /* 胴体 */ 
  GWsrect(x+size, y-size*2, x+size*3, y, c); 
 
 /* 尻尾 */	
    switch(cnt%3){
    case 0:
	GWxline(x+size*3, y, x+size*2+20, y-size, 0);
	break;
    	
    case 1:
    GWxline(x+size*3, y, x+size*2+25, y, 0);
    break;
    	
    case 2:
    GWxline(x+size*3, y, x+size*2+25, y, 0);
    break;	
    }
 /* 足 */
	switch(cnt%3){
	case 0:
	GWxline(x+size, y-size*2, x+size-7, y-size*2-20, 0);
	GWxline(x+size, y-size*2, x+size+7, y-size*2-20, 0);
	GWxline(x+size*3, y-size*2, x+size*3-7, y-size*2-20, 0);
	GWxline(x+size*3, y-size*2, x+size*3+7,  y-size*2-20, 0);
	break;
		
	case 1:
	GWxline(x+size, y-size*2, x+size-3, y-size*2-20, 0);
	GWxline(x+size, y-size*2, x+size+3, y-size*2-20, 0);
	GWxline(x+size*3, y-size*2, x+size*3-3, y-size*2-20, 0);
	GWxline(x+size*3, y-size*2, x+size*3+3,  y-size*2-20, 0);	
    break;
		
	case 2:
	GWxline(x+size, y-size*2, x+size, y-size, 0);
	GWxline(x+size*3, y-size*2, x+size*3, y-size*2, 0);
	break;
		
	}
		return 0;
}

int main()
{
  float x, y, size;
  int c, cnt;

  GWopen(0);
  GWindow(0.0, 0.0, 200.0, 200.0);
 
  size=10.0; /* 基本的なサイズ */
  x=200.0; y=70.0; /* 登場位置 */
   c=3;/* 体の色  */
   cnt=0;
	
  /* ループはじまり */

 	
	while( x > 10.0 ) {

    dog(x, y, size, c, cnt);
    cnt++;
  	x-=2.0;
    GWsrect(0.0, 0.0, 300.0, 30.0, 14);
	
	GWscircle(150, 140, 180, 180, 19);
	GWscircle(140, 145, 160, 175, 19);
	GWscircle(160, 145, 190, 175, 19);
	GWscircle(80, 100, 100, 120, 19);
	GWscircle(70, 102, 90, 118, 19);
	GWscircle(90, 102, 110, 118, 19);
	
	GWsleep(80);
    GWclear(18);
  };
   
  return 0;
}


