Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
snake/snake.cpp
- Committer:
- weiway
- Date:
- 2018-05-08
- Revision:
- 18:e58a1f8e72ad
- Parent:
- 15:47ea86f1ed70
- Child:
- 20:980b37fde361
File content as of revision 18:e58a1f8e72ad:
#include "snake.h"
snake::snake(){
}
snake::~snake(){
}
void snake::init(){
for (int i = 0; i <_point ; i++) {
_xoldpos[i] = 30;
_yoldpos[i] = 23;
_xnewpos[i] = 30 ;
_ynewpos[i] = 23;
}
dir_snake = 3;
_array = 100;
_point = 6;
}
void snake::update(Direction d,float mag){
if (dir_snake == 1){
s() ;}
else if (dir_snake == 2){
n();}
else if (dir_snake == 3){
e();}
else if (dir_snake == 4){
w();}
if ((d == S) )
{ dir_snake = 1 ;}
if ((d == N) )
{ dir_snake = 2 ;}
if ((d == E) )
{ dir_snake = 3 ;}
if ((d == W) )
{ dir_snake = 4 ;}
}
void snake::draw(N5110 &lcd)
{
for(int i=0; i<_point; i++) {
lcd.setPixel(_xnewpos[i],_ynewpos[i]);
}
}
Vector2D snake::get_pos()
{
Vector2D p = {_xnewpos[0],_ynewpos[0]};
return p;
}
void snake::set_pos(Vector2D p)
{
_xnewpos[0] = p.x;
_ynewpos[0] = p.y;
}
void snake::point()
{
_point++;
}
int snake::get_point()
{
return _point -6 ;
}
void snake::n() {
_xnewpos[0] = _xoldpos[0] ;
for (int i = 0; i < _array; i++) {
_xnewpos[i+1] = _xoldpos[i];
}
_ynewpos[0] = _yoldpos[0]- 1;
for (int i = 0; i < _array-1; i++) {
_ynewpos[i+1] = _yoldpos[i];
}
for (int i = 0; i < _array; i++) {
_xoldpos[i] = _xnewpos[i];
_yoldpos[i] = _ynewpos[i];
}
}
void snake::s(){
_xnewpos[0] = _xoldpos[0] ;
for (int i = 0; i < _array; i++) {
_xnewpos[i+1] = _xoldpos[i];
}
_ynewpos[0] = _yoldpos[0]+ 1;
for (int i = 0; i < _array-1; i++) {
_ynewpos[i+1] = _yoldpos[i];
}
for (int i = 0; i < _array; i++) {
_xoldpos[i] = _xnewpos[i];
_yoldpos[i] = _ynewpos[i];
}
}
void snake::w(){
_xnewpos[0] = _xoldpos[0]-1;
for (int i = 0; i < _array; i++) {
_xnewpos[i+1] = _xoldpos[i];
}
_ynewpos[0] = _yoldpos[0];
for (int i = 0; i < _array-1; i++) {
_ynewpos[i+1] = _yoldpos[i];
}
for (int i = 0; i < _array; i++) {
_xoldpos[i] = _xnewpos[i];
_yoldpos[i] = _ynewpos[i];
}
}
void snake::e(){
_xnewpos[0] = _xoldpos[0]+1;
for (int i = 0; i < _array; i++) {
_xnewpos[i+1] = _xoldpos[i];
}
_ynewpos[0] = _yoldpos[0];
for (int i = 0; i < _array-1; i++) {
_ynewpos[i+1] = _yoldpos[i];
}
for (int i = 0; i < _array; i++) {
_xoldpos[i] = _xnewpos[i];
_yoldpos[i] = _ynewpos[i];
}
}