ZIYI CHEN ml17z4c 201214999

Dependencies:   mbed

Committer:
ziyi11
Date:
Thu May 09 14:48:43 2019 +0000
Revision:
14:60c31d25d895
Parent:
13:08bdb4cffacd
can not add doc;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ziyi11 13:08bdb4cffacd 1 #include "Eng.h"
ziyi11 13:08bdb4cffacd 2
ziyi11 13:08bdb4cffacd 3 Eng::Eng()
ziyi11 13:08bdb4cffacd 4 {
ziyi11 13:08bdb4cffacd 5
ziyi11 13:08bdb4cffacd 6 }
ziyi11 13:08bdb4cffacd 7
ziyi11 13:08bdb4cffacd 8 Eng::~Eng()
ziyi11 13:08bdb4cffacd 9 {
ziyi11 13:08bdb4cffacd 10
ziyi11 13:08bdb4cffacd 11 }
ziyi11 13:08bdb4cffacd 12
ziyi11 13:08bdb4cffacd 13 void Eng::init()
ziyi11 13:08bdb4cffacd 14 {
ziyi11 13:08bdb4cffacd 15 dSnake.init(5,10); //she de chu shi zuo biao
ziyi11 13:08bdb4cffacd 16 _noodles.init(20,7);
ziyi11 13:08bdb4cffacd 17 _gameOver = false;
ziyi11 13:08bdb4cffacd 18
ziyi11 13:08bdb4cffacd 19 }
ziyi11 13:08bdb4cffacd 20
ziyi11 13:08bdb4cffacd 21
ziyi11 13:08bdb4cffacd 22
ziyi11 13:08bdb4cffacd 23 void Eng::userinput(Gamepad &pad)
ziyi11 13:08bdb4cffacd 24 {
ziyi11 13:08bdb4cffacd 25 _d = pad.get_direction();
ziyi11 13:08bdb4cffacd 26 }
ziyi11 13:08bdb4cffacd 27
ziyi11 13:08bdb4cffacd 28 void Eng::draw(N5110 &lcd)
ziyi11 13:08bdb4cffacd 29 {
ziyi11 13:08bdb4cffacd 30 lcd.drawRect(0,0,84,48,FILL_TRANSPARENT);
ziyi11 13:08bdb4cffacd 31 //
ziyi11 13:08bdb4cffacd 32 for (int i = 0; i < 84; i++) {
ziyi11 13:08bdb4cffacd 33 for (int j = 0; j < 48; j++) {
ziyi11 13:08bdb4cffacd 34 if (snake1[j][i] != 0) {
ziyi11 13:08bdb4cffacd 35 lcd.drawRect((2 * j) + 2,(2 * i) + 2,2,2,FILL_BLACK);
ziyi11 13:08bdb4cffacd 36 }
ziyi11 13:08bdb4cffacd 37 }
ziyi11 13:08bdb4cffacd 38 }
ziyi11 13:08bdb4cffacd 39 }
ziyi11 13:08bdb4cffacd 40
ziyi11 13:08bdb4cffacd 41 void Eng::score(N5110 &lcd)
ziyi11 13:08bdb4cffacd 42 {
ziyi11 13:08bdb4cffacd 43
ziyi11 13:08bdb4cffacd 44 lcd.clear();
ziyi11 13:08bdb4cffacd 45 lcd.printString("Score ",0,0);
ziyi11 13:08bdb4cffacd 46 char buffer[14];
ziyi11 13:08bdb4cffacd 47 int _score = (dSnake.getLength() - 5);
ziyi11 13:08bdb4cffacd 48
ziyi11 13:08bdb4cffacd 49 sprintf(buffer,"%3d",_score);
ziyi11 13:08bdb4cffacd 50 lcd.printString(buffer,0,1);
ziyi11 13:08bdb4cffacd 51
ziyi11 13:08bdb4cffacd 52
ziyi11 13:08bdb4cffacd 53
ziyi11 13:08bdb4cffacd 54 lcd.refresh();
ziyi11 13:08bdb4cffacd 55
ziyi11 13:08bdb4cffacd 56 wait(5.0);
ziyi11 13:08bdb4cffacd 57 }
ziyi11 13:08bdb4cffacd 58
ziyi11 13:08bdb4cffacd 59 void Eng::update(Gamepad &pad)
ziyi11 13:08bdb4cffacd 60 {
ziyi11 13:08bdb4cffacd 61
ziyi11 13:08bdb4cffacd 62 memset(snake1, 0, sizeof(snake1));
ziyi11 13:08bdb4cffacd 63 dSnake.update(_d);
ziyi11 13:08bdb4cffacd 64
ziyi11 13:08bdb4cffacd 65 dead();
ziyi11 13:08bdb4cffacd 66
ziyi11 13:08bdb4cffacd 67 snake1[_noodles.xcoordinate()][_noodles.ycoordinate()] = 2;
ziyi11 13:08bdb4cffacd 68
ziyi11 13:08bdb4cffacd 69 if (checkFood()) {
ziyi11 13:08bdb4cffacd 70
ziyi11 13:08bdb4cffacd 71 pad.tone(1000.0,0.1);
ziyi11 13:08bdb4cffacd 72
ziyi11 13:08bdb4cffacd 73 growSnake();
ziyi11 13:08bdb4cffacd 74
ziyi11 13:08bdb4cffacd 75 bool empty = false;
ziyi11 13:08bdb4cffacd 76
ziyi11 13:08bdb4cffacd 77 while (!empty) {
ziyi11 13:08bdb4cffacd 78
ziyi11 13:08bdb4cffacd 79 _noodles.random();
ziyi11 13:08bdb4cffacd 80
ziyi11 13:08bdb4cffacd 81 if ( snake1[_noodles.xcoordinate()][_noodles.ycoordinate()] == 0) {
ziyi11 13:08bdb4cffacd 82
ziyi11 13:08bdb4cffacd 83 empty = true;
ziyi11 13:08bdb4cffacd 84 }
ziyi11 13:08bdb4cffacd 85 }
ziyi11 13:08bdb4cffacd 86 }
ziyi11 13:08bdb4cffacd 87 }
ziyi11 13:08bdb4cffacd 88
ziyi11 13:08bdb4cffacd 89 void Eng::dead()
ziyi11 13:08bdb4cffacd 90 {
ziyi11 13:08bdb4cffacd 91
ziyi11 13:08bdb4cffacd 92 int _l =dSnake.getLength();
ziyi11 13:08bdb4cffacd 93
ziyi11 13:08bdb4cffacd 94 for (int i = 0; i < _l; i++) {
ziyi11 13:08bdb4cffacd 95
ziyi11 13:08bdb4cffacd 96 if (dSnake.xcoordinate(i) > 40) {
ziyi11 13:08bdb4cffacd 97 _gameOver = true;
ziyi11 13:08bdb4cffacd 98 } else if( dSnake.xcoordinate(i) < 0) {
ziyi11 13:08bdb4cffacd 99 _gameOver = true;
ziyi11 13:08bdb4cffacd 100 } else if (dSnake.ycoordinate(i) > 22 ) {
ziyi11 13:08bdb4cffacd 101 _gameOver = true;
ziyi11 13:08bdb4cffacd 102 } else if(dSnake.ycoordinate(i) < 0) {
ziyi11 13:08bdb4cffacd 103 _gameOver = true;
ziyi11 13:08bdb4cffacd 104 }
ziyi11 13:08bdb4cffacd 105
ziyi11 13:08bdb4cffacd 106 if (snake1[dSnake.xcoordinate(i)][dSnake.ycoordinate(i)] != 1) {
ziyi11 13:08bdb4cffacd 107 snake1[dSnake.xcoordinate(i)][dSnake.ycoordinate(i)] = 1;
ziyi11 13:08bdb4cffacd 108 } else {
ziyi11 13:08bdb4cffacd 109 _gameOver = true;
ziyi11 13:08bdb4cffacd 110 }
ziyi11 13:08bdb4cffacd 111 }
ziyi11 13:08bdb4cffacd 112 }
ziyi11 13:08bdb4cffacd 113
ziyi11 13:08bdb4cffacd 114 bool Eng::checkFood()
ziyi11 13:08bdb4cffacd 115 {
ziyi11 13:08bdb4cffacd 116 if (snake1[dSnake.xcoordinate(0)][dSnake.ycoordinate(0)] == 2) {
ziyi11 13:08bdb4cffacd 117 return true;
ziyi11 13:08bdb4cffacd 118 } else {
ziyi11 13:08bdb4cffacd 119 return false;
ziyi11 13:08bdb4cffacd 120 }
ziyi11 13:08bdb4cffacd 121 }
ziyi11 13:08bdb4cffacd 122
ziyi11 13:08bdb4cffacd 123 void Eng::growSnake()
ziyi11 13:08bdb4cffacd 124 {
ziyi11 13:08bdb4cffacd 125 if (dSnake.getLength()<4032) {
ziyi11 13:08bdb4cffacd 126
ziyi11 13:08bdb4cffacd 127 dSnake.grow();
ziyi11 13:08bdb4cffacd 128
ziyi11 13:08bdb4cffacd 129 }
ziyi11 13:08bdb4cffacd 130 }
ziyi11 13:08bdb4cffacd 131
ziyi11 13:08bdb4cffacd 132 float Eng::getScore()
ziyi11 13:08bdb4cffacd 133 {
ziyi11 13:08bdb4cffacd 134 return _score;
ziyi11 13:08bdb4cffacd 135 }
ziyi11 13:08bdb4cffacd 136
ziyi11 13:08bdb4cffacd 137
ziyi11 13:08bdb4cffacd 138 bool Eng::getGameOver()
ziyi11 13:08bdb4cffacd 139 {
ziyi11 13:08bdb4cffacd 140 return _gameOver;
ziyi11 13:08bdb4cffacd 141 }