adding in ecen427 space invaders final lab
This commit is contained in:
+337
@@ -0,0 +1,337 @@
|
||||
#include "alien.h"
|
||||
|
||||
int leftLim;
|
||||
int rightLim;
|
||||
|
||||
void renderAlien(unsigned int* framePointer) {
|
||||
if(getGuise() == 0) {
|
||||
setGuise(1);
|
||||
renderAlien1(framePointer);
|
||||
}else {
|
||||
setGuise(0);
|
||||
renderAlien2(framePointer);
|
||||
}
|
||||
}
|
||||
|
||||
void renderAlien1(unsigned int* framePointer) {
|
||||
short alienx, alieny;
|
||||
alienx = getAlienBlockPositionX();
|
||||
alieny = getAlienBlockPositionY();
|
||||
short row=0, col=0;
|
||||
short line = 0;
|
||||
short position = 0;
|
||||
short* aliens = getAliens();
|
||||
for(line = 0; line < 10; line++) {
|
||||
if(line % 2 == 1) {
|
||||
alieny += 10;
|
||||
}
|
||||
else {
|
||||
if(line == 0) {
|
||||
for(row=0; row<16; row++) {
|
||||
short position_helper = -1;
|
||||
for(col=0; col<352; col++) {
|
||||
if (((topAlien1[row%16] & (1<<(32-1-col)))) && aliens[position+position_helper] == 1) {
|
||||
framePointer[alieny*640 + alienx] = 0x00FFFFFF;
|
||||
}
|
||||
// else if(aliens[position+position_helper] == 0) {
|
||||
//
|
||||
// }
|
||||
else {
|
||||
framePointer[alieny*640 + alienx] = 0x00000000;
|
||||
}
|
||||
if(col % 32 == 0) {
|
||||
position_helper++;
|
||||
}
|
||||
alienx++;
|
||||
}
|
||||
alienx=getAlienBlockPositionX();
|
||||
alieny++;
|
||||
}
|
||||
}
|
||||
if(line == 2 || line == 4) {
|
||||
position += 11;
|
||||
for(row=0; row<16; row++) {
|
||||
short position_helper = -1;
|
||||
for(col=0; col<352; col++) {
|
||||
if (((middleAlien1[row%16] & (1<<(32-1-col)))) && aliens[position+position_helper] == 1) {
|
||||
framePointer[alieny*640 + alienx] = 0x00FFFFFF;
|
||||
}
|
||||
// else if(aliens[position+position_helper] == 0) {
|
||||
//
|
||||
// }
|
||||
else {
|
||||
framePointer[alieny*640 + alienx] = 0x00000000;
|
||||
}
|
||||
if(col % 32 == 0) {
|
||||
position_helper++;
|
||||
}
|
||||
alienx++;
|
||||
}
|
||||
alienx=getAlienBlockPositionX();
|
||||
alieny++;
|
||||
}
|
||||
}
|
||||
if(line == 6 || line == 8) {
|
||||
position += 11;
|
||||
for(row=0; row<16; row++) {
|
||||
short position_helper = -1;
|
||||
for(col=0; col<352; col++) {
|
||||
if (((bottomAlien1[row%16] & (1<<(32-1-col))))&& aliens[position+position_helper] == 1) {
|
||||
framePointer[alieny*640 + alienx] = 0x00FFFFFF;
|
||||
}
|
||||
// else if( aliens[position+position_helper] == 0) {
|
||||
//
|
||||
// }
|
||||
else {
|
||||
framePointer[alieny*640 + alienx] = 0x00000000;
|
||||
}
|
||||
if(col % 32 == 0) {
|
||||
position_helper++;
|
||||
}
|
||||
alienx++;
|
||||
}
|
||||
alienx=getAlienBlockPositionX();
|
||||
alieny++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void renderAlien2(unsigned int* framePointer) {
|
||||
short alienx, alieny;
|
||||
alienx = getAlienBlockPositionX();
|
||||
alieny = getAlienBlockPositionY();
|
||||
short row=0, col=0;
|
||||
short line = 0;
|
||||
short position = 0;
|
||||
short* aliens = getAliens();
|
||||
for(line = 0; line < 10; line++) {
|
||||
if(line % 2 == 1) {
|
||||
alieny += 10;
|
||||
}
|
||||
else {
|
||||
if(line == 0) {
|
||||
for(row=0; row<16; row++) {
|
||||
short position_helper = -1;
|
||||
for(col=0; col<352; col++) {
|
||||
if (((topAlien2[row%16] & (1<<(32-1-col)))) && aliens[position+position_helper] == 1) {
|
||||
framePointer[alieny*640 + alienx] = 0x00FFFFFF;
|
||||
}
|
||||
// else if(aliens[position+position_helper] == 0) {
|
||||
//
|
||||
// }
|
||||
else {
|
||||
framePointer[alieny*640 + alienx] = 0x00000000;
|
||||
}
|
||||
if(col % 32 == 0) {
|
||||
position_helper++;
|
||||
}
|
||||
alienx++;
|
||||
}
|
||||
alienx=getAlienBlockPositionX();
|
||||
alieny++;
|
||||
}
|
||||
}
|
||||
if(line == 2 || line == 4) {
|
||||
position += 11;
|
||||
for(row=0; row<16; row++) {
|
||||
short position_helper = -1;
|
||||
for(col=0; col<352; col++) {
|
||||
if (((middleAlien2[row%16] & (1<<(32-1-col))))&& aliens[position+position_helper] == 1) {
|
||||
framePointer[alieny*640 + alienx] = 0x00FFFFFF;
|
||||
}
|
||||
// else if(aliens[position+position_helper] == 0) {
|
||||
//
|
||||
// }
|
||||
else {
|
||||
framePointer[alieny*640 + alienx] = 0x00000000;
|
||||
}
|
||||
if(col % 32 == 0) {
|
||||
position_helper++;
|
||||
}
|
||||
alienx++;
|
||||
}
|
||||
alienx=getAlienBlockPositionX();
|
||||
alieny++;
|
||||
}
|
||||
}
|
||||
if(line == 6 || line == 8) {
|
||||
position += 11;
|
||||
for(row=0; row<16; row++) {
|
||||
short position_helper = -1;
|
||||
for(col=0; col<352; col++) {
|
||||
if (((bottomAlien2[row%16] & (1<<(32-1-col))))&& aliens[position+position_helper] == 1) {
|
||||
framePointer[alieny*640 + alienx] = 0x00FFFFFF;
|
||||
}
|
||||
// else if(aliens[position+position_helper] == 0) {
|
||||
//
|
||||
// }
|
||||
else {
|
||||
framePointer[alieny*640 + alienx] = 0x00000000;
|
||||
}
|
||||
if(col % 32 == 0) {
|
||||
position_helper++;
|
||||
}
|
||||
alienx++;
|
||||
}
|
||||
alienx=getAlienBlockPositionX();
|
||||
alieny++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void blankAlien(unsigned int* framePointer){
|
||||
short alienx, alieny;
|
||||
alienx = getAlienBlockPositionX();
|
||||
alieny = getAlienBlockPositionY();
|
||||
short row=0, col=0;
|
||||
for(row = 0; row < 130; row++){
|
||||
for(col = 0; col < 352; col++){
|
||||
framePointer[alieny*640 + alienx] = 0x00000000;
|
||||
alienx++;
|
||||
}
|
||||
alienx=getAlienBlockPositionX();
|
||||
alieny++;
|
||||
}
|
||||
}
|
||||
|
||||
void dyingAlien(unsigned int* framePointer, short alienx, short alieny) {
|
||||
short row=0, col=0;
|
||||
for(row = 0; row < 16; row++){
|
||||
for(col = 0; col < 32; col++){
|
||||
if ((dying_alien[row%16] & (1<<(32-1-col)))) {
|
||||
framePointer[(alieny+row)*640 + alienx+col] = 0x00FFFFFE;
|
||||
} else {
|
||||
framePointer[(alieny+row)*640 + alienx+col] = 0x00000000;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dyingAlienHelper(unsigned int* framePointer, short alienx, short alieny) {
|
||||
short row=0, col=0;
|
||||
for(row = 0; row < 16; row++){
|
||||
for(col = 0; col < 32; col++){
|
||||
framePointer[(alieny+row)*640 + alienx+col] = 0x00000000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int columnCheck(int value) {
|
||||
short* aliens = getAliens();
|
||||
if(aliens[value] == 0 && aliens[value+11] == 0 && aliens[value+22] == 0 && aliens[value+33] == 0 && aliens[value+44] == 0) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int setRightMax() {
|
||||
int max = 352;
|
||||
if(!columnCheck(10)) {
|
||||
max = 320;
|
||||
if(!columnCheck(9)) {
|
||||
max = 288;
|
||||
if(!columnCheck(8)) {
|
||||
max = 256;
|
||||
if(!columnCheck(7)) {
|
||||
max = 224;
|
||||
if(!columnCheck(6)) {
|
||||
max = 192;
|
||||
if(!columnCheck(5)) {
|
||||
max = 160;
|
||||
if(!columnCheck(4)) {
|
||||
max = 128;
|
||||
if(!columnCheck(3)) {
|
||||
max = 96;
|
||||
if(!columnCheck(2)) {
|
||||
max = 64;
|
||||
if(!columnCheck(1)) {
|
||||
max = 32;
|
||||
if(!columnCheck(0)) {
|
||||
max = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return max;
|
||||
}
|
||||
|
||||
int setLeftMin() {
|
||||
int min = 0;
|
||||
if(!columnCheck(0)) {
|
||||
min = 32;
|
||||
if(!columnCheck(1)) {
|
||||
min = 64;
|
||||
if(!columnCheck(2)) {
|
||||
min = 96;
|
||||
if(!columnCheck(3)) {
|
||||
min = 128;
|
||||
if(!columnCheck(4)) {
|
||||
min = 160;
|
||||
if(!columnCheck(5)) {
|
||||
min = 192;
|
||||
if(!columnCheck(6)) {
|
||||
min = 224;
|
||||
if(!columnCheck(7)) {
|
||||
min = 256;
|
||||
if(!columnCheck(8)) {
|
||||
min = 288;
|
||||
if(!columnCheck(9)) {
|
||||
min = 320;
|
||||
if(!columnCheck(10)) {
|
||||
min = 352;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return min;
|
||||
}
|
||||
|
||||
void moveAlien(unsigned int* framePointer) {
|
||||
short dir = getDirection();
|
||||
short alienx, alieny;
|
||||
alienx = getAlienBlockPositionX();
|
||||
alieny = getAlienBlockPositionY();
|
||||
int right = setRightMax();
|
||||
if((alienx+right) == 640 && dir == 0) {
|
||||
setDirection(1);
|
||||
blankAlien(framePointer);
|
||||
alieny += 8;
|
||||
setAlienBlockPosition(alienx, alieny);
|
||||
|
||||
}
|
||||
int left = 0 - setLeftMin();
|
||||
if(alienx == left && dir == 1) {
|
||||
setDirection(0);
|
||||
blankAlien(framePointer);
|
||||
alieny += 8;
|
||||
setAlienBlockPosition(alienx, alieny);
|
||||
|
||||
}
|
||||
if(dir == 0) {
|
||||
alienx += 4;
|
||||
setAlienBlockPosition(alienx, alieny);
|
||||
}
|
||||
else {
|
||||
alienx -= 4;
|
||||
setAlienBlockPosition(alienx, alieny);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user