今天偷懶了下,才寫了七十行代碼,罪過。反對偷懶。
empty函數在bottle類里。
bool empty( int x, int y )
{
if ( x<0 || x>=8 || y<0 || y>=16 ) return false;
if ( b_grid_type[y][x] == NOTHING ) return true;
return false;
}
move函數在doctor類里。
void move( void )
{
switch( d_direct )
{
case DD_DOWN:
if ( d_state )
{
if ( bottle->empty( d_x, d_y+1 ) )
{
++d_y;
break;
}
}
else
{
if ( bottle->empty( d_x, d_y+1 ) && bottle->empty( d_x+1, d_y+1 ) )
{
++d_y;
break;
}
}
/*************這里沒寫完,預計是個while(true)的循環*********************/
break;
case DD_UP:
if ( d_state )
{
if ( bottle->empty( d_x+1, d_y ) ) d_state = false;
else if ( bottle->empty( d_x-1, d_y ) ) { --d_x; d_state = false; }
}
else
{
if ( bottle->empty( d_x, d_y-1 ) )
{
d_state = true;
Color tmp = d_color[0];
d_color[0] = d_color[1];
d_color[1] = tmp;
}
else if ( bottle->empty( d_x+1, d_y-1 ) )
{
++d_x;
d_state = true;
Color tmp = d_color[0];
d_color[0] = d_color[1];
d_color[1] = tmp;
}
}
break;
case DD_LEFT:
if ( d_state && bottle->empty( d_x-1, d_y ) && bottle->empty( d_x-1, d_y-1 ) ) --d_x;
if ( !d_state && bottle->empty( d_x-1, d_y ) ) --d_x;
break;
case DD_RIGHT:
if ( d_state && bottle->empty( d_x+1, d_y ) && bottle->empty( d_x+1, d_y-1 ) ) --d_x;
if ( !d_state && bottle->empty( d_x+1, d_y ) ) --d_x;
break;
default:
break;
}
}
我在想貓說的話,一天四百行,一年就是12W行。我覺得,寫瑪麗醫生這種代碼,除了理順思路的時候費點腦子以外,碼代碼的時候還是相當輕松的,比那些邪門算法輕松多了,一天四百行倒也不是沒有可能呢。婷婷加油,畢業的時候一定要拿出至少十萬行代碼來。