コード例 #1
0
ファイル: App.cpp プロジェクト: seanwhalen42/CS3113-HW
void App::drawTitle(){
	GLuint fontTexture = LoadTexture("font1.png");
	int titleArray[14] = { 83, 112, 97, 99, 101, 32, 73, 110, 118, 97, 100, 101, 114, 115 }; //Space Invaders
	for (int i : titleArray){
		SheetSprite charSprite = decodeFromIndex(i, 16, 16, fontTexture);
		charSprite.draw(-216 + 32 * i, 0, 1);
	}
}
コード例 #2
0
ファイル: GameApp.cpp プロジェクト: tiansrealm/CS3113_Tian_HW
void GameApp::displayText(const string s, float x, float y, float w, float h, float spacing){
	shader->setViewMatrix(Matrix());
	Matrix model;
	model.Translate(x, y, 0);
	SheetSprite temp;
	viewMatrix.identity();
	shader->setViewMatrix(viewMatrix);
	for (size_t i = 0; i < s.length(); i++){
		temp = *sprites[s.substr(i, 1)];
		temp.width = w;
		temp.height = h;
		shader->setModelMatrix(model);
		temp.draw(shader);
		model.Translate(w + spacing, 0, 0);
	}
}
コード例 #3
0
ファイル: Entity.cpp プロジェクト: seanwhalen42/CS3113-HW
Entity::Entity(SheetSprite sprite, float x, float y, bool isStatic, float scale):sprite(sprite), x(x), y(y), staticEntity(isStatic), scale(scale){
	height = sprite.getHeight();
	width = sprite.getWidth();
	velocity_x = 0;
	velocity_y = 0;
	acceleration_x = 0;
	acceleration_y = -10.0f; //Gravity
	top = y + height / 2;
	bottom = y - height / 2;
	left = x - width / 2;
	right = x + width / 2;
	friction_x = FRICTION;
	friction_y = FRICTION;
	topCollide = false;
	bottomCollide = false;
	leftCollide = false;
	rightCollide = false;
}
コード例 #4
0
ファイル: Entity.cpp プロジェクト: EChu16/CS3113
void Entity::Draw(ShaderProgram* program, Matrix& gameMatrix, SheetSprite& sprite) {
	sprite.Draw(program, gameMatrix, x, y);
}
コード例 #5
0
ファイル: main.cpp プロジェクト: ts2562/hw3
void renderGame(){
	SDL_Init(SDL_INIT_VIDEO);
	displayWindow = SDL_CreateWindow("My Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 360, SDL_WINDOW_OPENGL);
	SDL_GLContext context = SDL_GL_CreateContext(displayWindow);
	SDL_GL_MakeCurrent(displayWindow, context);
	SDL_Event event;
	bool done = false;
#ifdef _WINDOWS
	glewInit();
#endif

	Matrix projectionMatrix;
	Matrix modelMatrix;
	Matrix viewMatrix;
	ShaderProgram program(RESOURCE_FOLDER"vertex_textured.glsl", RESOURCE_FOLDER"fragment_textured.glsl");

	const Uint8 *keys = SDL_GetKeyboardState(NULL);
	GLuint spriteSheetTexture = LoadTexture("sheet.png");

	Entity enemySprite = Entity(spriteSheetTexture, (425.0f / 1024.0f), (384.0f / 1024.0f), (93.0f / 1024.0f), (84.0f / 1024.0f), .3, 0, 0);
	Entity enemySprite2 = Entity(spriteSheetTexture, (425.0f / 1024.0f), (384.0f / 1024.0f), (93.0f / 1024.0f), (84.0f / 1024.0f), .3, 0, 0);
	Entity enemySprite3 = Entity(spriteSheetTexture, (425.0f / 1024.0f), (384.0f / 1024.0f), (93.0f / 1024.0f), (84.0f / 1024.0f), .3, 0, 0);
	Entity enemySprite4 = Entity(spriteSheetTexture, (425.0f / 1024.0f), (384.0f / 1024.0f), (93.0f / 1024.0f), (84.0f / 1024.0f), .3, 0, 0);
	Entity enemySprite5 = Entity(spriteSheetTexture, (425.0f / 1024.0f), (384.0f / 1024.0f), (93.0f / 1024.0f), (84.0f / 1024.0f), .3, 0, 0);

	SheetSprite mySprite = SheetSprite(spriteSheetTexture, (224.0f / 1024.0f), (832.0f / 1024.0f),
		(99.0f / 1024.0f), (75.0f / 1024.0f), .3);

	Bullet myBullet = Bullet(spriteSheetTexture, (856.0f / 1024.0f), (421.0f / 1024.0f),
		(9.0f / 1024.0f), (51.0f / 1024.0f), .3);
	vector<Entity> enemies;
	enemies.push_back(enemySprite);
	enemies.push_back(enemySprite2);
	enemies.push_back(enemySprite3);
	enemies.push_back(enemySprite4);
	enemies.push_back(enemySprite5);

	projectionMatrix.setOrthoProjection(-3.55, 3.55, -2.0f, 2.0f, -1.0f, 1.0f);
	glUseProgram(program.programID);
	float lastFrameTicks = 0.0f;
	double movement = 0.0;
	double move = 0.0;
	double enemyMovement = 0.0;

	bool canShoot = true;
	bool turn = false;
	while (!done) {
		while (SDL_PollEvent(&event)) {
			if (event.type == SDL_QUIT || event.type == SDL_WINDOWEVENT_CLOSE) {
				done = true;
			}
		}
		glClear(GL_COLOR_BUFFER_BIT);
		program.setModelMatrix(modelMatrix);
		program.setProjectionMatrix(projectionMatrix);
		program.setViewMatrix(viewMatrix);
		glBindTexture(GL_TEXTURE_2D, spriteSheetTexture);
		float ticks = (float)SDL_GetTicks() / 1000.0f;
		float elapsed = ticks - lastFrameTicks;
		lastFrameTicks = ticks;
		if ((enemyMovement * 0.1) > 1){
			turn = true;
		}
		if ((enemyMovement * 0.1) < -0.75){
			turn = false;
		}
		if (turn == false){
			enemyMovement = enemyMovement + elapsed;
		}
		else if (turn == true){
			enemyMovement = enemyMovement - elapsed;
		}

		if (keys[SDL_SCANCODE_A] && myBullet.isShot == false) {
			move -= elapsed;
		}
		else if (keys[SDL_SCANCODE_D] && myBullet.isShot == false) {
			move += elapsed;
		}

		if (keys[SDL_SCANCODE_S]){
			myBullet.isShot = true;
		}

		myBullet.x = move;
		myBullet.y = movement;
		for (int i = 0; i < enemies.size(); i++)
		{
			if (enemies[i].isAlive == true){
				enemies[i].initPos = (float)i;
				enemies[i].movement = (float)(enemyMovement * 0.1);
				enemies[i].Draw(&program);
			}
			if (myBullet.x >= enemies[i].GetX1() && myBullet.x <= enemies[i].GetX2()){
				if (myBullet.y >= enemies[i].GetY()){
					enemies[i].isAlive = false;
				}
			}
		}

		if (myBullet.isShot == false){
			program.setModelMatrix(mySprite.matrix);
			movement = 0.0;
		}
		modelMatrix.identity();
		mySprite.matrix.identity();
		mySprite.matrix.Translate(move, 0.0, 0.0);
		mySprite.Draw(&program);
		if (myBullet.isShot == true){
			movement = movement + elapsed;
			program.setModelMatrix(myBullet.matrix);
			myBullet.matrix.identity();
			myBullet.matrix.Translate(move, movement, 0.0);
			myBullet.Draw(&program);
			if (movement >= 2.5){
				myBullet.isShot = false;
			}
		}
		SDL_GL_SwapWindow(displayWindow);
	}

	SDL_Quit();
}