1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

Хелп ... У меня змейка стераетса не правильно =(

Тема в разделе "Общие вопросы по С и С++", создана пользователем ProEvoAndrew, 9 авг 2009.

Статус темы:
Закрыта.
  1. ProEvoAndrew

    ProEvoAndrew Гость

    [codebox]class snake {
    class node {
    public :
    int x ; int oldx ;
    int y ; int oldy ;
    node *next ;
    node *prev ;
    node(int _x = 0 , int _y = 0) {
    x = oldx =_x ; y = oldy = _y ; next = 0 ; prev = 0 ;
    }
    };
    node *pbeg , *pend ;
    public :
    int size ;

    snake() ;
    ~snake() ;
    void add(int , int) ;
    int getX() ;
    int getY() ;
    void setX(int x) ;
    void setY(int y) ;
    bool step() ;
    void draw() ;
    };

    snake::snake() {
    pbeg = 0 ;
    pend = 0 ;

    size = 0 ;
    }

    snake::~snake() {
    if(pbeg != 0) {
    node *pv = pbeg ;
    while(pv) {
    pv = pv->next ;
    delete pbeg ;
    pbeg = pv ;
    }
    }
    }

    void snake::add(int _x , int _y) {
    node *pv = new node(_x , _y) ;
    if(pbeg == 0)pbeg = pend = pv ;
    else {
    pv -> prev = pend ;
    pend -> next = pv ;
    pend = pv ;
    }
    size++ ;
    }

    int snake::getX() {
    return pbeg -> x ;
    }

    int snake::getY() {
    return pbeg -> y ;
    }

    void snake::setX(int x) {
    pbeg -> x = x ;
    }

    void snake::setY(int y) {
    pbeg -> y = y ;
    }

    void snake::draw() {
    setcolor(GREEN) ;

    node *pv = pbeg ;
    while(pv) {
    rectangle(pv -> x , pv -> y , pv -> x + 5 , pv -> y + 5) ;
    pv = pv -> next ;
    }
    }

    bool snake::step() {
    pbeg -> oldx = pbeg -> x ;
    pbeg -> oldy = pbeg -> y ;
    switch(getch()) {
    case VK_UP :
    pbeg -> y = pbeg -> y - 5 ;
    break ;
    case VK_DOWN :
    pbeg -> y = pbeg -> y + 5 ;
    break ;
    case VK_LEFT :
    pbeg -> x = pbeg -> x - 5 ;
    break ;
    case VK_RIGHT :
    pbeg -> x = pbeg -> x + 5 ;
    break ;
    case VK_ESC :
    exit(0) ;
    }
    node *pv = pbeg -> next ;
    while(pv) {
    pv -> oldx = pv -> x;
    pv -> oldy = pv -> y;
    pv -> x = pv -> prev -> oldx ;
    pv -> y = pv -> prev -> oldy ;

    pv = pv -> next ;
    }
    setcolor(BLACK) ;
    rectangle(pend -> oldx , pend -> oldy , pend -> oldx + 5 , pend -> oldy + 5) ;

    draw() ;

    return true ;
    }

    [/codebox]
     
  2. ProEvoAndrew

    ProEvoAndrew Гость

    что в етом коде не так ... ХЛП ПЛЗ ...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей