ZIYI CHEN ml17z4c 201214999

Dependencies:   mbed

Committer:
ziyi11
Date:
Thu May 09 11:04:43 2019 +0000
Revision:
11:1812f04382fa
Parent:
9:a8b2086a46e5
fix some bug;

Who changed what in which revision?

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