Всем привет!
Написал игру на c++ с использованием библиотеки SDL2.
После кампиляции вылезла ошибка:
multiple definition of `main'Вот сам код:
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include "SDL2/SDL.h"
#include "SDL2/SDL_main.h"
#include "SDL2/SDL_mixer.h"
#include <math.h>
#include <time.h>
SDL_Window * win=0;
SDL_Renderer * ren=0;
Mix_Music * bgm=0;
Mix_Chunk * BAM=0;
Mix_Chunk * BAM12=0;
Mix_Chunk * easy=0;
void terminate(void)
{
if(ren){SDL_DestroyRenderer(ren);}
if(win){SDL_DestroyWindow(win);}
SDL_Quit();
}
int main(int argc, char**argr)
{
double x,y,dx,dy,a;
int run=0;
int score1=0;
int score2=0;
SDL_Rect paddle1,paddle2,ball,wall1,wall2;
const Uint8 * keys;
SDL_Event e;
srand(time(0));
if(SDL_Init(SDL_INIT_EVERYTHING)!=0)
{
printf("Init:%s\n",SDL_GetError());
exit(1);
}
atexit(terminate);
win=SDL_CreateWindow("FGame by Anemon v1.2",50,50,800,600,SDL_WINDOW_SHOWN);
if(!win){
printf("win:%s\n", SDL_GetError());
exit(1);
}
ren=SDL_CreateRenderer(win,-1,SDL_RENDERER_ACCELERATED|SDL_RENDERER_PRESENTVSYNC);
if(!ren){
printf("Ren:%s\n",SDL_GetError());
exit(1);
}
Mix_OpenAudio(13100, MIX_DEFAULT_FORMAT, 4, 1024);
bgm = Mix_LoadMUS("bgm.mp3");
//Mix_PlayMusic(bgm, -1);
BAM = Mix_LoadWAV("bam.wav");
BAM12 = Mix_LoadWAV("bam12.wav");
easy = Mix_LoadWAV("easy.wav");
wall1.x=wall2.x=0;
wall1.y=0;
wall2.y=575;
wall1.w=wall2.w=800;
wall1.h=wall2.h=25;
paddle1.x=0;
paddle2.x=775;
paddle1.w=paddle2.w=25;
paddle1.h=paddle2.h=100;
paddle1.y=paddle2.y=250;
ball.w=ball.h=20;
ball.x=390;
ball.y=290;
x=400;
y=300;
for(;;){
while(SDL_PollEvent(&e)){
switch(e.type)
{
case SDL_QUIT:
exit(0);
break;
}
}
keys=SDL_GetKeyboardState(0); //Подключение управления клавишами
//Управление первой ракеткой(начало)
if(keys[SDL_SCANCODE_W]){
if(paddle1.y>25){
paddle1.y-=4;
}
}
if(keys[SDL_SCANCODE_S]){
if(paddle1.y+paddle1.h<575){
paddle1.y+=4;
}
}
//Управление первой ракеткой(конец)
//Управление второй ракеткой(начало)
if(keys[SDL_SCANCODE_UP]){
if(paddle2.y>25){
paddle2.y-=4;
}
}
if(keys[SDL_SCANCODE_DOWN]){
if(paddle2.y+paddle2.h<575){
paddle2.y+=4;
}
}
//Управление второй ракеткой(конец)
//Запуск шарика(начало)
if(keys[SDL_SCANCODE_SPACE])
{
if(!run){
run=1;
a=M_PI/6*(1+(rand()%1000)/1000.0);
dx=4.0*cos(a);
dy=4.0*sin(a);
if(rand()%2){dx=-dx;}
if(rand()%2){dy=-dy;}
}
}
//Запуск шарика(конец)
//Движение шарика(начало)
if(run){
x+=dx;
y+=dy;
ball.x=(int)(x-10);
ball.y=(int)(y-10);
}
//Движение шарика(конец)
//Удар об стену игрока 1 и 2(начало)
if((x<0)||(x>=800))
{
run=0;
x=400;
y=300;
ball.x=(int)(x-10);
ball.y=(int)(y-10);
Mix_PlayChannel(3, easy, 0);
}
//Удар об стену игрока 1 и 2(конец)
//Удар об стену(начало)
if(((y-10)<(wall1.y+wall1.h))||((y+10)>(wall2.y)))
{
dy=-dy;
Mix_PlayChannel(2, BAM, 0);
}
//Удар об стену(конец)
//Удар об ракетку(начало)
if(((x-10)<(paddle1.x+paddle1.w))&&((y-10)>(paddle1.y))&&((y+10)<(paddle1.y+paddle1.h))){
dx=fabs(dx);
Mix_PlayChannel(3, BAM12, 0);
}
if(((x+10)>(paddle2.x))&&((y-10)>(paddle2.y))&&((y+10)<(paddle2.y+paddle2.h))){
dx=-fabs(dx);
Mix_PlayChannel(3, BAM12, 0);
}
//Удар об ракетку(конец)
//Рисование на экране(начало)
SDL_SetRenderDrawColor(ren,0,63,0,255); //Цвет
SDL_RenderClear(ren);
SDL_SetRenderDrawColor(ren,255,255,255,255);
SDL_RenderDrawRect(ren,&wall1);
SDL_RenderDrawRect(ren,&wall2);
SDL_RenderDrawRect(ren,&paddle1);
SDL_RenderDrawRect(ren,&paddle2);
SDL_SetRenderDrawColor(ren,0,0,0,255);
SDL_RenderFillRect(ren,&ball);
SDL_RenderPresent(ren);
//Рисование на экране(конец)
}
return 0;
}