mirror of
https://codeberg.org/kbruen/y3s2-gui-project.git
synced 2025-02-22 17:19:37 +02:00
Compare commits
6 commits
Author | SHA1 | Date | |
---|---|---|---|
3bd635b066 | |||
5119beb058 | |||
d92154db83 | |||
9d48e31906 | |||
011b57f051 | |||
429fe9e60b |
8 changed files with 57 additions and 8 deletions
|
@ -7,5 +7,5 @@ X X X
|
|||
X XXX XXX
|
||||
X X
|
||||
XXXXXX X
|
||||
X X
|
||||
XG X
|
||||
XXXXXXXXX
|
||||
|
|
5
examples/maze5.txt
Normal file
5
examples/maze5.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
XX
|
||||
|
||||
XX XX
|
||||
|
||||
XX
|
5
examples/maze6.txt
Normal file
5
examples/maze6.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
XXXXXXXXXX
|
||||
X X X X
|
||||
X XXX X
|
||||
X X X
|
||||
XXXXXXXXXX
|
|
@ -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);
|
||||
}
|
||||
|
|
41
src/maze.cpp
41
src/maze.cpp
|
@ -12,15 +12,25 @@ 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() {
|
||||
glClearColor(0.8, 0.8, 0.8, 1);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadIdentity();
|
||||
|
||||
//configures the camera with the position_x and position_z variables
|
||||
gluLookAt(
|
||||
posX,
|
||||
0,
|
||||
|
@ -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;
|
||||
|
|
|
@ -20,3 +20,9 @@ void NoMazeScreen::display() {
|
|||
glFlush();
|
||||
glutSwapBuffers();
|
||||
}
|
||||
|
||||
void NoMazeScreen::keyboard(unsigned char key, int x, int y) {
|
||||
if (key == '\e') {
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,4 +4,5 @@
|
|||
|
||||
struct NoMazeScreen : public GlutEvents {
|
||||
virtual void display();
|
||||
virtual void keyboard(unsigned char key, int x, int y);
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Name: y3s2-gui-project
|
||||
Version: 1.0.4
|
||||
Version: 1.0.7
|
||||
Release: 1%{?dist}
|
||||
Summary: Maze project in OpenGL for Graphics and User Interfaces lecture in year 3, semester 2
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue