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.
element/element.cpp@10:ae5f62a1e40e, 2019-05-08 (annotated)
- Committer:
- wuweilong
- Date:
- Wed May 08 20:08:17 2019 +0000
- Revision:
- 10:ae5f62a1e40e
version1
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| wuweilong | 10:ae5f62a1e40e | 1 | #include "element.h" |
| wuweilong | 10:ae5f62a1e40e | 2 | element::element() |
| wuweilong | 10:ae5f62a1e40e | 3 | { |
| wuweilong | 10:ae5f62a1e40e | 4 | |
| wuweilong | 10:ae5f62a1e40e | 5 | } |
| wuweilong | 10:ae5f62a1e40e | 6 | |
| wuweilong | 10:ae5f62a1e40e | 7 | element::~element() |
| wuweilong | 10:ae5f62a1e40e | 8 | { |
| wuweilong | 10:ae5f62a1e40e | 9 | |
| wuweilong | 10:ae5f62a1e40e | 10 | } |
| wuweilong | 10:ae5f62a1e40e | 11 | void element::init(int size ,int foodx ,int foody,int snakex, int snakey ,int n) |
| wuweilong | 10:ae5f62a1e40e | 12 | { |
| wuweilong | 10:ae5f62a1e40e | 13 | _size=size; |
| wuweilong | 10:ae5f62a1e40e | 14 | _foodpos.x=foodx; |
| wuweilong | 10:ae5f62a1e40e | 15 | _foodpos.y=foody; |
| wuweilong | 10:ae5f62a1e40e | 16 | for(int i=0;i<n;i++){ |
| wuweilong | 10:ae5f62a1e40e | 17 | _snakebody[i].x=snakex+2*i; |
| wuweilong | 10:ae5f62a1e40e | 18 | _snakebody[i].y=snakey; |
| wuweilong | 10:ae5f62a1e40e | 19 | } |
| wuweilong | 10:ae5f62a1e40e | 20 | |
| wuweilong | 10:ae5f62a1e40e | 21 | } |
| wuweilong | 10:ae5f62a1e40e | 22 | void element::update() |
| wuweilong | 10:ae5f62a1e40e | 23 | { |
| wuweilong | 10:ae5f62a1e40e | 24 | |
| wuweilong | 10:ae5f62a1e40e | 25 | srand(time(NULL)); |
| wuweilong | 10:ae5f62a1e40e | 26 | _foodpos.x=rand()%(WIDTH-2); |
| wuweilong | 10:ae5f62a1e40e | 27 | _foodpos.y=rand()%(HEIGHT-2); |
| wuweilong | 10:ae5f62a1e40e | 28 | |
| wuweilong | 10:ae5f62a1e40e | 29 | } |
| wuweilong | 10:ae5f62a1e40e | 30 | |
| wuweilong | 10:ae5f62a1e40e | 31 | Vector2D element::getfoodpos(){ |
| wuweilong | 10:ae5f62a1e40e | 32 | Vector2D p; |
| wuweilong | 10:ae5f62a1e40e | 33 | p=_foodpos; |
| wuweilong | 10:ae5f62a1e40e | 34 | return p; |
| wuweilong | 10:ae5f62a1e40e | 35 | } |
| wuweilong | 10:ae5f62a1e40e | 36 | void element::draw(N5110 &lcd,int n){ |
| wuweilong | 10:ae5f62a1e40e | 37 | lcd.drawRect(_foodpos.x,_foodpos.y,_size,_size,FILL_BLACK); |
| wuweilong | 10:ae5f62a1e40e | 38 | for(int i=0;i<n;i++){ |
| wuweilong | 10:ae5f62a1e40e | 39 | lcd.drawRect(_snakebody[i].x,_snakebody[i].y,3,3,FILL_BLACK); |
| wuweilong | 10:ae5f62a1e40e | 40 | } |
| wuweilong | 10:ae5f62a1e40e | 41 | } |
| wuweilong | 10:ae5f62a1e40e | 42 | void element::input(Gamepad &pad){ |
| wuweilong | 10:ae5f62a1e40e | 43 | _d=pad.get_direction(); |
| wuweilong | 10:ae5f62a1e40e | 44 | } |
| wuweilong | 10:ae5f62a1e40e | 45 | void element::move(int n){ |
| wuweilong | 10:ae5f62a1e40e | 46 | int k=0; |
| wuweilong | 10:ae5f62a1e40e | 47 | if(_snakebody[0].x>_snakebody[1].x) |
| wuweilong | 10:ae5f62a1e40e | 48 | { |
| wuweilong | 10:ae5f62a1e40e | 49 | k=0;// |
| wuweilong | 10:ae5f62a1e40e | 50 | } |
| wuweilong | 10:ae5f62a1e40e | 51 | if(_snakebody[0].x<_snakebody[1].x) |
| wuweilong | 10:ae5f62a1e40e | 52 | { |
| wuweilong | 10:ae5f62a1e40e | 53 | k=1; |
| wuweilong | 10:ae5f62a1e40e | 54 | } |
| wuweilong | 10:ae5f62a1e40e | 55 | if(_snakebody[0].y<_snakebody[1].y) |
| wuweilong | 10:ae5f62a1e40e | 56 | { |
| wuweilong | 10:ae5f62a1e40e | 57 | k=2; |
| wuweilong | 10:ae5f62a1e40e | 58 | } |
| wuweilong | 10:ae5f62a1e40e | 59 | if(_snakebody[0].y>_snakebody[1].y) |
| wuweilong | 10:ae5f62a1e40e | 60 | { |
| wuweilong | 10:ae5f62a1e40e | 61 | k=3; |
| wuweilong | 10:ae5f62a1e40e | 62 | } |
| wuweilong | 10:ae5f62a1e40e | 63 | |
| wuweilong | 10:ae5f62a1e40e | 64 | for(int i=n-1;i>0;i--) |
| wuweilong | 10:ae5f62a1e40e | 65 | { |
| wuweilong | 10:ae5f62a1e40e | 66 | _snakebody[i].x=_snakebody[i-1].x; |
| wuweilong | 10:ae5f62a1e40e | 67 | _snakebody[i].y=_snakebody[i-1].y; |
| wuweilong | 10:ae5f62a1e40e | 68 | } |
| wuweilong | 10:ae5f62a1e40e | 69 | |
| wuweilong | 10:ae5f62a1e40e | 70 | if (_d == N && k!=3 ) |
| wuweilong | 10:ae5f62a1e40e | 71 | { |
| wuweilong | 10:ae5f62a1e40e | 72 | _snakebody[0].y-=1; |
| wuweilong | 10:ae5f62a1e40e | 73 | |
| wuweilong | 10:ae5f62a1e40e | 74 | |
| wuweilong | 10:ae5f62a1e40e | 75 | } if (_d == S && k!=2) { |
| wuweilong | 10:ae5f62a1e40e | 76 | |
| wuweilong | 10:ae5f62a1e40e | 77 | _snakebody[0].y+=1; |
| wuweilong | 10:ae5f62a1e40e | 78 | |
| wuweilong | 10:ae5f62a1e40e | 79 | }if(_d==E && k!=1){ |
| wuweilong | 10:ae5f62a1e40e | 80 | |
| wuweilong | 10:ae5f62a1e40e | 81 | _snakebody[0].x+=1; |
| wuweilong | 10:ae5f62a1e40e | 82 | |
| wuweilong | 10:ae5f62a1e40e | 83 | |
| wuweilong | 10:ae5f62a1e40e | 84 | |
| wuweilong | 10:ae5f62a1e40e | 85 | } if(_d==W && k!=0){ |
| wuweilong | 10:ae5f62a1e40e | 86 | |
| wuweilong | 10:ae5f62a1e40e | 87 | _snakebody[0].x-=1; |
| wuweilong | 10:ae5f62a1e40e | 88 | |
| wuweilong | 10:ae5f62a1e40e | 89 | |
| wuweilong | 10:ae5f62a1e40e | 90 | }if(_d==CENTRE && k==0) |
| wuweilong | 10:ae5f62a1e40e | 91 | |
| wuweilong | 10:ae5f62a1e40e | 92 | { |
| wuweilong | 10:ae5f62a1e40e | 93 | _snakebody[0].x+=1; |
| wuweilong | 10:ae5f62a1e40e | 94 | } |
| wuweilong | 10:ae5f62a1e40e | 95 | if(_d==CENTRE && k==1) |
| wuweilong | 10:ae5f62a1e40e | 96 | |
| wuweilong | 10:ae5f62a1e40e | 97 | { |
| wuweilong | 10:ae5f62a1e40e | 98 | _snakebody[0].x-=1; |
| wuweilong | 10:ae5f62a1e40e | 99 | } |
| wuweilong | 10:ae5f62a1e40e | 100 | if(_d==CENTRE && k==2) |
| wuweilong | 10:ae5f62a1e40e | 101 | |
| wuweilong | 10:ae5f62a1e40e | 102 | { |
| wuweilong | 10:ae5f62a1e40e | 103 | _snakebody[0].y-=1; |
| wuweilong | 10:ae5f62a1e40e | 104 | } |
| wuweilong | 10:ae5f62a1e40e | 105 | if(_d==CENTRE && k==3) |
| wuweilong | 10:ae5f62a1e40e | 106 | |
| wuweilong | 10:ae5f62a1e40e | 107 | { |
| wuweilong | 10:ae5f62a1e40e | 108 | _snakebody[0].y+=1; |
| wuweilong | 10:ae5f62a1e40e | 109 | } |
| wuweilong | 10:ae5f62a1e40e | 110 | |
| wuweilong | 10:ae5f62a1e40e | 111 | } |
| wuweilong | 10:ae5f62a1e40e | 112 | |
| wuweilong | 10:ae5f62a1e40e | 113 | Vector2D element::getsnakepos(int n){ |
| wuweilong | 10:ae5f62a1e40e | 114 | Vector2D p; |
| wuweilong | 10:ae5f62a1e40e | 115 | p=_snakebody[n]; |
| wuweilong | 10:ae5f62a1e40e | 116 | return p; |
| wuweilong | 10:ae5f62a1e40e | 117 | } |
| wuweilong | 10:ae5f62a1e40e | 118 | |
| wuweilong | 10:ae5f62a1e40e | 119 | |
| wuweilong | 10:ae5f62a1e40e | 120 | |
| wuweilong | 10:ae5f62a1e40e | 121 |