SFML community forums

Help => General => Topic started by: P1T0 on April 15, 2020, 03:07:43 pm

Title: expected an expression
Post by: P1T0 on April 15, 2020, 03:07:43 pm
When i try to run this code it gives me an error:

expected an expression

(sorry for the bad english)

#include <iostream>
#include <SFML/Graphics.hpp>



using namespace sf;

int width = 1024;
int height = 768;
int roadW = 2000;
int segL = 200; //segment lenght
float camD = 0.84;//camera depth

struct Line
{
        float x, y, z; //pokemon reference & 3d center of line
        float X, Y, W; //screen coord
        float scale;

        Line() { x = y = z = 0; }

        //from world to screen coordinates
        void project(int camX, int camY, int camZ)
        {
                scale = camD / (z - camZ);
                X = (1 + scale * (x - camX)) * width / 2;
                Y = (1 - scale * (y - camY)) * height / 2;
                W = scale * roadW * width / 2;
        }
};

void drawQuad(RenderWindow& w, Color c, int x1, int y1, int w1, int x2, int y2, int w2)
{
        ConvexShape shape(4);
        shape.setFillColor(c);
        shape.setPoint(0, Vector2f(x1-w1,y1));
        shape.setPoint(1, Vector2f(x2-w2,y2));
        shape.setPoint(2, Vector2f(x2+w2,y2));
        shape.setPoint(3, Vector2f(x1+w1,y1));
        w.draw(shape);


}

int main()
{

        RenderWindow app(VideoMode(width, height), "Outrun Racing!");
        app.setFramerateLimit(60);

        std::vector<Line> lines;

        for (int i = 0; i < 1600; i++)
        {
                Line line;
                line.z = i * segL;

                lines.push_back(line);
        }

        int N = lines.size();

        while (app.isOpen())
        {
                Event e;
                while (app.pollEvent(e))
                {
                        if (e.type == Event::Closed)
                                app.close();   
                }
                app.clear();
               
                for (int n = 0; n < 300; n++)
                {
                        Line &l = lines[n % N];
                        l.project(0, 1500, 0);

                        Color grass = (n / 3) % 2 ? Color(16, 200, 16) : Color(0, 154, 0);
                        Color rumble = (n / 3) % 2 ? Color(225, 225, 225) : Color(0, 0, 0);
                        Color road = (n / 3) % 2 ? Color(107,107, 107) : Color(105, 105, 105);

                        Line p = lines[(n-1)%N];
                        drawQuad(app, grass, 0, p.Y, width, 0, l.Y, width);
                        drawQuad(app, rumble, p.X, p.Y, p.W * 1.2, l.X, l.Y, l.W * 1.2);
                        drawQuad(app, road, p.X, p.Y, ,p.x,p.z,p.W*1.2);
                }

                app.display();
        }
        return 0;
}
Title: Re: expected an expression
Post by: eXpl0it3r on April 15, 2020, 04:46:45 pm
expected an expression is normal C++ compiler that has nothing to do with SFML and you can find tons of answer on the internet on what the cause might be or how to solve it.

Where does the error occur exactly?
At best, post the full error and not just part of it.
Title: Re: expected an expression
Post by: P1T0 on April 15, 2020, 06:33:26 pm
The error is changed, it gives me Error E0018 expected ')',and I don't understand why, since I put the parenthesis on it, I don't know this library and I'm in trouble.
There's the line of code:
drawQuad(app, road,p.x,p.y,p.z p.X, p.Y, ,p.W);

I'm programming with visual studio 2019
Title: Re: expected an expression
Post by: Laurent on April 15, 2020, 07:48:24 pm
p.z p.X
A missing comma.
Title: Re: expected an expression
Post by: P1T0 on April 15, 2020, 09:18:47 pm
Thanks a lot, but when i try to compile it opens a white window gives me an error :
Line 1501
Expression: vector subscript out of range


(sorry for the disturbance, but I'm new on this forum and on SFML in general, and sorry for the bad English)
Title: Re: expected an expression
Post by: Laurent on April 15, 2020, 10:15:17 pm
That's an assert triggered by vector::operator[] when the given index is greater than the size of the vector. Inspect the call stack to find out which line of your code triggers the assert.

You should take the time to learn and practice C++ properly (for example: with such a detailed error message you would have found the problem easily by searching a little bit by yourself). We can't teach you this complex language on the SFML forums ;)
Title: Re: expected an expression
Post by: P1T0 on April 16, 2020, 01:05:15 pm
Thanks! ;D :D :)