Обновить du5/snake.c
This commit is contained in:
		
							parent
							
								
									7689845620
								
							
						
					
					
						commit
						77b4094c65
					
				
							
								
								
									
										50
									
								
								du5/snake.c
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								du5/snake.c
									
									
									
									
									
								
							@ -1,23 +1,57 @@
 | 
			
		||||
#include "snake.h"
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
struct snake* add_snake(struct snake* snake,int x,int y){
 | 
			
		||||
    return NULL;
 | 
			
		||||
struct snake* add_snake(struct snake* snake, int x, int y) {
 | 
			
		||||
    struct snake* head = calloc(1, sizeof(struct snake));
 | 
			
		||||
    if (head == NULL) {
 | 
			
		||||
        return NULL; // Handle memory allocation failure
 | 
			
		||||
    }
 | 
			
		||||
    head->x = x;
 | 
			
		||||
    head->y = y;
 | 
			
		||||
    head->next = snake;
 | 
			
		||||
    return head;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct snake* remove_snake(struct snake* snake){
 | 
			
		||||
    return NULL;
 | 
			
		||||
struct snake* remove_snake(struct snake* snake) {
 | 
			
		||||
    if (snake == NULL) {
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
    if (snake->next == NULL) {
 | 
			
		||||
        free(snake);
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    struct snake* this = snake;
 | 
			
		||||
    struct snake* prev = NULL;
 | 
			
		||||
    while (this->next != NULL) {
 | 
			
		||||
        prev = this;
 | 
			
		||||
        this = this->next;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    free(this);
 | 
			
		||||
    prev->next = NULL;
 | 
			
		||||
    return snake;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void free_snake(struct snake* sn){
 | 
			
		||||
void free_snake(struct snake* sn) {
 | 
			
		||||
    if (sn == NULL) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    free_snake(sn->next);
 | 
			
		||||
    free(sn);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int is_snake(struct snake* snake,int x,int y){
 | 
			
		||||
int is_snake(struct snake* snake, int x, int y) {
 | 
			
		||||
    for (struct snake* this = snake; this != NULL; this = this->next) {
 | 
			
		||||
        if (this->x == x && this->y == y) {
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int step_state(struct state* st){
 | 
			
		||||
	int nx = (st->snake->x + st->sx);
 | 
			
		||||
int step_state(struct state* st) {
 | 
			
		||||
    int nx = (st->snake->x + st->sx);
 | 
			
		||||
    int ny = (st->snake->y + st->sy);
 | 
			
		||||
    return END_CONTINUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user