Browse Source

Default solid to true, hold space to switch

master v1.0.5
Kenneth Bruen 3 years ago
parent
commit
429fe9e60b
Signed by: kbruen
GPG Key ID: C1980A470C3EE5B1
  1. 2
      examples/maze4.txt
  2. 3
      src/main.cpp
  3. 39
      src/maze.cpp
  4. 2
      y3s2-gui-project.spec

2
examples/maze4.txt

@ -7,5 +7,5 @@ X X X
X XXX XXX
X X
XXXXXX X
X X
XG X
XXXXXXXXX

3
src/main.cpp

@ -95,6 +95,9 @@ void load_maze(const std::string& path) {
case 'X':
row.push_back(1);
break;
case 'G':
row.push_back(2);
break;
default:
row.push_back(-1);
}

39
src/maze.cpp

@ -12,8 +12,18 @@ MazeScreen::MazeScreen(const std::vector<std::vector<int>>& maze):
maze(maze),
angleX(0),
mouseCapture(false),
posX(1),
posZ(1) {}
posX(9999),
posZ(9999),
solid(true) {
for (int i = 0; i < maze.size(); i++) {
for (int j = 0; j < maze[i].size(); j++) {
if (maze[i][j] == 0 && j < posZ) {
posX = i;
posZ = j;
}
}
}
}
void MazeScreen::display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@ -35,6 +45,14 @@ void MazeScreen::display() {
for (int i = 0; i < maze.size(); i++) {
for (int j = 0; j < maze[i].size(); j++) {
// Draw floor
glPushMatrix();
glColor3ub(0x33, 0x33, 0x33);
glTranslatef(i, -1, j);
glutSolidCube(1);
glPopMatrix();
float green, blue;
switch (maze[i][j]) {
case -1:
glPushMatrix();
@ -49,9 +67,9 @@ void MazeScreen::display() {
glTranslatef(i, 0, j);
// Scale green by X
auto green = Utils::clamp<float>(Utils::nummap<float>(abs(i - posX), 0, 3, 0, 1), 0, 1);
green = Utils::clamp<float>(Utils::nummap<float>(abs(i - posX), 0, 3, 0, 1), 0, 1);
// Scale blue by Z
auto blue = Utils::clamp<float>(Utils::nummap<float>(abs(j - posZ), 0, 3, 0, 1), 0, 1);
blue = Utils::clamp<float>(Utils::nummap<float>(abs(j - posZ), 0, 3, 0, 1), 0, 1);
glColor3f(1, green, blue);
glutWireCube(1);
@ -60,6 +78,13 @@ void MazeScreen::display() {
glutSolidCube(1);
}
glPopMatrix();
break;
case 2:
glPushMatrix();
glColor3ub(0xee, 0xee, 0x00);
glTranslatef(i, -1, j);
glutSolidCube(1);
glPopMatrix();
break;
}
@ -76,7 +101,7 @@ void MazeScreen::keyboard(unsigned char key, int x, int y) {
glutSetCursor(GLUT_CURSOR_INHERIT);
}
else if (key == ' ') {
solid = !solid;
solid = false;
}
else if (key == 'w') {
forceX += 1;
@ -106,6 +131,10 @@ void MazeScreen::keyboardUp(unsigned char key, int x, int y) {
else if (key == 'd') {
forceZ -= 1;
}
else if (key == ' ') {
solid = true;
}
}
int gameTime;

2
y3s2-gui-project.spec

@ -1,5 +1,5 @@
Name: y3s2-gui-project
Version: 1.0.4
Version: 1.0.5
Release: 1%{?dist}
Summary: Maze project in OpenGL for Graphics and User Interfaces lecture in year 3, semester 2

Loading…
Cancel
Save