예제 #1
0
/*
 * draws the snake and food to the screen
 */
void Window::draw_screen()
{
    erase();
    draw_game_frame();
    draw_snake();
    draw_food();
    refresh();
}
예제 #2
0
파일: MlxLib.cpp 프로젝트: Geod24/Nibbler
int		MlxLib::redraw(const std::list<Position>& pos,
			       const Position& food)
{
  clear_game();
  draw_snake(pos);
  draw_food(food);
  repaint();
  return (LIB_SUCCESS);
}
예제 #3
0
파일: snake.c 프로젝트: kahn04/snake
int snake_move(SNAKE *snake, int *food)
{
    // 丢掉最后一节身体
    pop_last_body(snake);

    // 在头部加个新身体
    new_body_affer_head(snake);

    // 脑袋前进一下
    move_head(snake);
    mvaddch(snake->y, snake->x, snake->head_chr);

    // 吃豆儿
    if (snake->y == food[1] && snake->x == food[0])
    {
        add_last_body(snake);
            
        food = random_food(snake);
        draw_food(food);
        if (speed - speed_up > speed_max)
        {
            speed = speed - speed_up;
        }
    }

    // 死蛇
    if ((judge_dead(snake)) == 1)
    {
        snake->head_chr = 'X';
        snake->body_chr = 'x';

        init_pair(3, COLOR_RED, COLOR_BLACK);
        attron(COLOR_PAIR(3));
        draw_whole_snake(snake);
        char dead_str[] = "OH, THE POOR LITTLE SNAKE";
        mvprintw(LINES/2-1, COLS/2-sizeof(dead_str)/2-1, dead_str );
        refresh();
        attroff(COLOR_PAIR(3));
        return 1;
    }

    mvprintw(0, 0, "snake head at: %d, %d;    snake length: %d;    food at: %d, %d;   ", snake->x, snake->y, snake->length, food[0], food[1]);
    refresh();
    return 0;
}
예제 #4
0
void render()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0f, 0.0f, 0.0f);

	calculate_field_size();

	draw_food();
	draw_ants();
	if (grid)
		draw_grid();
	calculate_fps();
	if (debug) {
		draw_debug();
	}

	glutSwapBuffers();
}
예제 #5
0
int main()
{
    INITSCR();
    INITINFOWIN();  
    INITGAMEWIN();
    food Tfood=creat_food();
    snake Tsnake = init_snake();         //创建贪吃蛇
    draw_food(Tfood,Tsnake);

    /* 开始游戏 */
	while(start_game(Tsnake,Tfood)>0)
	  ;

    getch();
    destory_snake(Tsnake);
	endwin();
	return 0;

}
예제 #6
0
파일: draw_map.c 프로젝트: k0ink0in/Zappy
void			check_draw(char *tmp)
{
	if (my_strcmp(tmp, "linemate") == 0)
		draw_stone(1);
	if (my_strcmp(tmp, "deraumere") == 0)
		draw_stone(2);
	if (my_strcmp(tmp, "sibur") == 0)
		draw_stone(3);
	if (my_strcmp(tmp, "mendiane") == 0)
		draw_stone(4);
	if (my_strcmp(tmp, "phiras") == 0)
		draw_stone(5);
	if (my_strcmp(tmp, "thystame") == 0)
		draw_stone(6);
	if (my_strcmp(tmp, "nourriture") == 0)
		draw_food();
	if (my_strcmp(tmp, "player") == 0)
		draw_player();
}
예제 #7
0
int main() {
    self[0] = 0b00000100;
    self[1] = 0b00000100;

    self[2] = 0b00000011;
    self[3] = 0b00000100;

    self[4] = 0b00000010;
    self[5] = 0b00000100;
   /* 
    self[6] = 0b00000001;
    self[7] = 0b00000100;
    
    self[8] = 0b00000000;
    self[9] = 0b00000100;
    
    self[10] = 0b00000000;
    self[11] = 0b00000101;

    self[12] = 0b00000000;
    self[13] = 0b00000110;
*/

    generate_food();
    while(1) {
        check_control();
        move();
        update_fb();

        draw_food();
        draw();
        delay();
        undraw_food();
        draw();
        delay();
    }

    return 0;
}
예제 #8
0
파일: main.c 프로젝트: nicball/playground
void redraw(struct snake * s, struct point f) {
    clear();
    draw_border();
    draw_food(f);
    draw_snake(s);
}
예제 #9
0
파일: main.c 프로젝트: stocyr/Carme-Snake
/**
 * Hauptfunktion. Wird als erstes aufgerufen.
 * Struktogramm:
 * <img src="../../Spielablauf_Struktogramm.png">
 * @return gibt 0 zurück
 */
int main()
{
	init_graphics();		//Function um Grafik Lib zu initialisieren, gibt evtl später mal Errorcode zurück...
    init_counter();

    /**
     * \todo UART Interrupts funktionieren noch nicht.
     * Als Workaround wird nun alle 1ms im Timer-Interrupt-Handler die UART1 Schnittstelle gepollt. <br>
     */
    init_uart();

    init_genrand(GUI_GetTime());

    while(1)
    {
    	init_game();
    	init_level();

    	// warten bis eine taste gedrückt wird, welche den initialen Zustand von snake_direction ändert
    	snake_direction = '?';
		while(snake_direction == '?');

		// jetzt food zeichnen
		food = randomize_food();
		draw_food(food);

		enable_interrupts();

		do
		{
			switch(step_forward(check_initial_state()))
			{
			case COLLISION:
				game_over = 1;
				disable_interrupts();
				//write_byte(score);

				FFLCR &= ~(1<<7);			// DLAB löschen für zugriff
				while (!(FFLSR & (1<<5)));	// Solange UART Busy
				FFTHR = score;

				enable_interrupts();
				break;

			case FOOD:
				score++;
				if(size >= 15)
				{
					// wenn Länge = 15: Level-Up
					score += 10;
					level++;
					init_level();
				}
				food = randomize_food();
				disable_interrupts();
				draw_food(food);
				enable_interrupts();
				break;

			case NOTHING:
				break;
			}

			delay(delay_time);
		}
		while(game_over != 1);
    }

    return 0;
}
예제 #10
0
파일: snake.c 프로젝트: kahn04/snake
int main(int argc, char *argv[])
{
    int ch;

    initscr();
    start_color();
    cbreak();
    keypad(stdscr, TRUE);
    noecho();
    curs_set(0);
    init_pair(1, COLOR_CYAN, COLOR_BLACK);

    attron(COLOR_PAIR(1));
    //画边
    mvaddch(1, 0, '+');
    mvaddch(1, COLS-1, '+');
    mvaddch(LINES-1, COLS-1, '+');
    mvaddch(LINES-1, 0, '+');
    mvhline(1, 1, '-', COLS-1-1);
    mvhline(LINES-1, 1, '-', COLS-1-1);
    mvvline(2, 0, '|', LINES-2-1);
    mvvline(2, COLS-1, '|', LINES-2-1);

    refresh();
    attroff(COLOR_PAIR(1));

    // 来条蛇
    SNAKE snake;
    init_snake(&snake);
    draw_whole_snake(&snake);
    
    // 初始豆儿
    int *food;
    food = random_food(&snake);
    //mvaddch(food[1], food[0], '*');
    draw_food(food);

    int d;
    int i;
    now_time=0;
    while (1)
    {
        if(ioctl(0,FIONREAD,&i)<0)
        {
            printf("ioctl failed, error=%d\n ",errno);
            break;
        }
        if(!i)  // 小蛇自动跑部分
        {
            usleep(time_rate);
            now_time = now_time + time_rate;
            if (!(now_time < speed))
            {
                now_time = 0;
                if (snake_move(&snake, food))
                    break;
            }
            continue;
        }
        now_time = 0;
        ch = getch();
        if (ch < 258 || ch > 261)
            continue;
        if ( ch+snake.d != KEY_LEFT+KEY_UP )
        {
            d = ch - snake.d;
            if ( d == 1 || d == -1)
                continue;
        }
        snake.d = ch;

        if (snake_move(&snake, food))
            break;

    }
    getch();
    endwin();
    return 0;
}
예제 #11
0
파일: main.c 프로젝트: dalhorinek/snakie
int game ( int *c ) {
	char title[100];

	int **body;
	int i = 0;
	int dir = *c;
	int state = 0;

	snakesize = 7;
	food_x = 0;
	food_y = 0;
	points = 0;
	*c = KEY_RIGHT;

	clear();
	body = (int **) malloc(sizeof(int *)*snakesize);
	for ( i = 0; i != snakesize; i++ ) {
		body[i] = (int *) malloc(sizeof(int)*2);
	}

	attron(COLOR_PAIR(PANEL));
	for ( i = 0; i != COLS; i++ ) {
		mvaddch(0, i, ' ');
	}
	sprintf(title," ..:: Snakie v 1.0 ::.. ");
	mvaddstr(0, COLS/2-strlen(title)/2, title);
	attroff(COLOR_PAIR(PANEL));
	refresh();

	for ( i = 0; i!= snakesize; i++ ) {
		body[i][x] = (COLS/2)-i;
		body[i][y] = (LINES/2);
	}

	
	pos_food(body);
	draw_food();
	draw_snake(body);

	while ( 1 ) { 
		clear_snake(body);
		switch(*c) {
			case KEY_UP:
				dir = 'U';
				break;

			case KEY_DOWN:
				dir = 'D';
				break;

			case KEY_RIGHT:
				dir = 'R';
				break;

			case KEY_LEFT:
				dir = 'L';
				break;
		}

		if ( *c == 'q' ) { 
			if ( confirm() == 1 ) {
				state = 0; 
				break; 
			}
		}

		move_snake(dir, &body);
		if ( (state = check_position(body)) != 0 ) {
			dead = 1;
			break;
		}
		eat_food(&body);
		draw_food();
		draw_info();
		draw_snake(body);
		usleep( dir == 'L' || dir == 'R' ? speed*0.75 : speed );
	}
	int ret = quit(&body, state);
	return ret;
}