コード例 #1
0
ファイル: Snake_t.cpp プロジェクト: nikonikolov/lab_switch
void Snake_t::reset(){
	location.clear();
	location.push_back(Point(2,0));
	location.push_back(Point(1,0));
	location.push_back(Point(0,0));
	gen_target();
	prev_dir=dir_right;
}
コード例 #2
0
ファイル: target.c プロジェクト: kkudrolli/Team-SDK-545
vector_t get_label(mnist_labels_t labels, size_t i)
{
    // Grab the correct label
    uint32_t *data = labels->labels->data;
    uint32_t target = data[i];
    
    return gen_target(target);
}
コード例 #3
0
ファイル: Snake_t.cpp プロジェクト: nikonikolov/lab_switch
void Snake_t::move(direction_t dir){

	list<Point>::iterator it_nose, it_tail;
	list<Point>::reverse_iterator rit_current, rit_next;

	// reverse list if opposite direction chosen
	if((prev_dir==dir_up && dir==dir_down) || (prev_dir==dir_down && dir==dir_up) || 
					(prev_dir==dir_left && dir==dir_right) || (prev_dir==dir_right && dir==dir_left)) 	location.reverse();

	it_nose = location.begin();
	it_tail = --location.end();

	Point target_got(*it_tail);
	Point new_nose(*it_nose);

	prev_dir = dir;

	// Get the new_nose
	if 		(dir==dir_up)		new_nose.y = ((new_nose.y) - 1 + d_height)%d_height;
	else if (dir==dir_down)		new_nose.y = ((new_nose.y) + 1)%d_height;
	else if	(dir==dir_left)		new_nose.x = ((new_nose.x) - 1 + d_width)%d_width;
	else if (dir==dir_right)	new_nose.x = ((new_nose.x) + 1)%d_width;

	// Move the whole snake
	for(rit_current = location.rbegin(), rit_next = ++location.rbegin(); rit_current != location.rend(); ++rit_current, ++rit_next){
		if(new_nose==*rit_current){
				reset();
				return;
		}

		if(rit_next!=location.rend()) *rit_current=*rit_next;
		else						  *rit_current=new_nose;
	}

	// Check if target is captured
	if(*it_nose==target){
		location.push_back(target_got);
		gen_target();
	} 
}