adding new object.h for ch.20 ex.19
This commit is contained in:
parent
aab442042b
commit
237f86c62e
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@
|
||||
!Makefile
|
||||
!README.md
|
||||
!*.py
|
||||
!*.h
|
||||
|
27
object.h
Normal file
27
object.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef _object_h
|
||||
#define _object_h
|
||||
|
||||
typedef enum {
|
||||
NORTH, SOUTH, EAST, WEST
|
||||
} Direction;
|
||||
|
||||
typedef struct {
|
||||
char *description;
|
||||
int (*init)(void *self);
|
||||
void (*describe)(void *self);
|
||||
void (*destroy)(void *self);
|
||||
void *(*move)(void *self, Direction direction);
|
||||
int (*attack)(void *self, int damage);
|
||||
} Object;
|
||||
|
||||
int Object_init(void *self);
|
||||
void Object_destroy(void *self);
|
||||
void Object_describe(void *self);
|
||||
void *Object_move(void *self, Direction direction);
|
||||
int Object_attack(void *self, int damage);
|
||||
void *Object_new(size_t size, Object proto, char *description);
|
||||
|
||||
#define NEW(T, N) Object_new(sizeof(T), T##Proto, N)
|
||||
#define _(N) proto.N
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user