Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Prog2
/
eloadas_peldak
/
ea_05
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
e2667b8f
authored
Mar 03, 2019
by
Szeberényi Imre
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SDL2
parent
8daf658a
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
65 additions
and
43 deletions
+65
-43
SDL_alakzat/alakzat.cbp
+6
-6
SDL_alakzat/alakzat.cpp
+1
-1
SDL_alakzat/alakzat.h
+4
-4
SDL_alakzat/kor.cpp
+3
-2
SDL_alakzat/main.cpp
+48
-28
SDL_alakzat/szakasz.cpp
+3
-2
No files found.
SDL_alakzat/alakzat.cbp
View file @
e2667b8f
...
...
@@ -35,15 +35,15 @@
</Compiler>
<Linker>
<Add
library=
"mingw32"
/>
<Add
library=
"SDLmain"
/>
<Add
library=
"SDL.dll"
/>
<Add
library=
"SDL2main"
/>
<Add
library=
"SDL2"
/>
<Add
library=
"SDL2_gfx"
/>
<Add
library=
"SDL2_image"
/>
<Add
library=
"SDL2_ttf"
/>
<Add
library=
"user32"
/>
<Add
library=
"dxguid"
/>
<Add
library=
"gdi32"
/>
<Add
library=
"winmm"
/>
<Add
library=
"dxguid"
/>
<Add
library=
"SDL_gfx"
/>
<Add
library=
"SDL_image"
/>
<Add
library=
"SDL_ttf"
/>
<Add
directory=
"$(#sdl.lib)"
/>
</Linker>
<Unit
filename=
"alakzat.cpp"
/>
...
...
SDL_alakzat/alakzat.cpp
View file @
e2667b8f
...
...
@@ -4,7 +4,7 @@
*/
#include "alakzat.h"
SDL_
Surface
*
Alakzat
::
sc
r
;
/// statikus tag létrehozása
SDL_
Renderer
*
Alakzat
::
rendere
r
;
/// statikus tag létrehozása
/// mozgat - eltolja az alakzat origóját
/// @param d - eltolás
...
...
SDL_alakzat/alakzat.h
View file @
e2667b8f
...
...
@@ -4,8 +4,8 @@
*/
#ifndef ALAKZAT_H
#define ALAKZAT_H
#include <SDL.h>
#include <SDL_gfxPrimitives.h>
#include <SDL
2/sdl
.h>
#include <SDL
2/SDL2
_gfxPrimitives.h>
#include "pont.h"
#include "szin.h"
...
...
@@ -15,7 +15,7 @@ class Alakzat {
protected
:
Pont
p0
;
///< alakzat origója
Szin
sz
;
///< alakzat színe
static
SDL_
Surface
*
sc
r
;
///< eldugott globális változó
static
SDL_
Renderer
*
rendere
r
;
///< eldugott globális változó
public:
/// Konstruktor
/// @param p0 - kezdőpont
...
...
@@ -28,7 +28,7 @@ public:
/// suface beállítása
/// @param s - SDL surface
static
void
set
Surface
(
SDL_Surface
*
s
)
{
scr
=
s
;
}
static
void
set
Renderer
(
SDL_Renderer
*
r
)
{
renderer
=
r
;
}
/// rajzol
virtual
void
rajzol
()
const
=
0
;
// tisztán virtuális
...
...
SDL_alakzat/kor.cpp
View file @
e2667b8f
...
...
@@ -6,6 +6,7 @@
/// Kört rajzoló rajzol fv.
void
Kor
::
rajzol
()
const
{
filledCircleColor
(
scr
,
p0
.
x
,
p0
.
y
,
r
,
sz
);
SDL_Flip
(
scr
);
/// nem a legjobb megoldás a villogás miatt, de most elmegy
filledCircleColor
(
renderer
,
p0
.
x
,
p0
.
y
,
r
,
sz
);
// SDL_RenderPresent(renderer);
// SDL_Flip(scr); /// nem a legjobb megoldás a villogás miatt, de most elmegy
}
SDL_alakzat/main.cpp
View file @
e2667b8f
...
...
@@ -17,30 +17,34 @@ inline int delta(int x) {
#ifdef DEMO
return
0
;
#else
return
x
==
0
?
0
:
x
<
0
?
-
1
:
1
;
return
x
==
0
?
0
:
x
<
0
?
-
1
0
:
10
;
#endif // DEMO
}
/// segédfüggvény az SDL inicializálásához
/// @return suface pointer vagy 0
SDL_Surface
*
init
()
{
if
(
SDL_Init
(
SDL_INIT_VIDEO
)
<
0
)
return
NULL
;
/// @return renderer pointer vagy 0
SDL_Renderer
*
init
()
{
if
(
SDL_Init
(
SDL_INIT_EVERYTHING
)
<
0
)
{
return
0
;
}
SDL_Window
*
sdlWindow
;
SDL_Renderer
*
sdlRenderer
;
if
(
SDL_CreateWindowAndRenderer
(
640
,
480
,
SDL_WINDOW_RESIZABLE
,
&
sdlWindow
,
&
sdlRenderer
)
<
0
)
{
return
0
;
}
SDL_RenderClear
(
sdlRenderer
);
/// SDL jelen változata lezárja a szabványos kimeneteteket.
/// Ezért újra kinyitjuk, hogy látszódjanak a konzolon a debug kiírások
std
::
freopen
(
"CON"
,
"w"
,
stdout
);
std
::
freopen
(
"CON"
,
"w"
,
stderr
);
return
SDL_SetVideoMode
(
1024
,
768
,
0
,
SDL_ANYFORMAT
);
return
sdlRenderer
;
}
int
main
(
int
argc
,
char
*
argv
[])
{
SDL_
Surface
*
screen
=
init
();
if
(
screen
==
NULL
)
{
std
::
cerr
<<
"Nem sikerult az
SDL INIT:
"
<<
SDL_GetError
()
<<
std
::
endl
;
SDL_
Renderer
*
renderer
=
init
();
if
(
renderer
==
NULL
)
{
std
::
cerr
<<
"Nem sikerult az
inicializálás
"
<<
SDL_GetError
()
<<
std
::
endl
;
return
1
;
}
Alakzat
::
setSurface
(
screen
);
// screen letárolása az "Alakzat-ba"
Alakzat
::
setRenderer
(
renderer
);
// screen letárolása az "Alakzat-ba"
const
int
N
=
100
;
// max 100 alakzatunk lehet
Alakzat
*
idom
[
N
];
...
...
@@ -55,36 +59,52 @@ int main(int argc, char* argv[]) {
/// Eseménykezelõ ciklus.
SDL_Event
ev
;
while
(
SDL_WaitEvent
(
&
ev
)
&&
ev
.
type
!=
SDL_QUIT
)
{
static
bool
drag
=
false
;
switch
(
ev
.
type
)
{
case
SDL_MOUSEMOTION
:
{
// egérmozgás esemény
int
dx
=
delta
(
ev
.
motion
.
xrel
);
// merre mozdult ?
int
dy
=
delta
(
ev
.
motion
.
yrel
);
for
(
int
i
=
0
;
i
<
db
;
i
++
)
{
// végigmegyünk az összesen
idom
[
i
]
->
mozgat
(
Pont
(
dx
,
dy
));
// kicsit mozdítunk rajta
idom
[
i
]
->
rajzol
();
// kirajzoljuk
case
SDL_MOUSEMOTION
:
// egérmozgás esemény
if
(
drag
)
{
int
dx
=
delta
(
ev
.
motion
.
xrel
);
// merre mozdult ?
int
dy
=
delta
(
ev
.
motion
.
yrel
);
for
(
int
i
=
0
;
i
<
db
;
i
++
)
{
// végigmegyünk az összesen
idom
[
i
]
->
mozgat
(
Pont
(
dx
,
dy
));
// kicsit mozdítunk rajta
idom
[
i
]
->
rajzol
();
// kirajzoljuk
}
SDL_RenderPresent
(
renderer
);
}
break
;
}
case
SDL_WINDOWEVENT
:
if
(
ev
.
window
.
event
==
SDL_WINDOWEVENT_EXPOSED
)
{
for
(
int
i
=
0
;
i
<
db
;
i
++
)
// végigmegyünk az összesen
idom
[
i
]
->
rajzol
();
// kirajzoljuk
}
SDL_RenderPresent
(
renderer
);
break
;
case
SDL_MOUSEBUTTONDOWN
:
// egérgomb kezelése
if
(
db
<
N
)
{
if
(
ev
.
button
.
button
==
SDL_BUTTON_LEFT
)
idom
[
db
]
=
new
Szakasz
(
Pont
(
ev
.
button
.
x
,
ev
.
button
.
y
),
40
,
80
,
GREEN
);
if
(
ev
.
button
.
button
==
SDL_BUTTON_LEFT
)
{
drag
=
true
;
}
else
if
(
db
<
N
)
{
if
(
ev
.
button
.
button
==
SDL_BUTTON_MIDDLE
)
idom
[
db
]
=
new
Szakasz
(
Pont
(
ev
.
button
.
x
,
ev
.
button
.
y
),
40
,
80
,
GREEN
);
else
idom
[
db
]
=
new
Kor
(
Pont
(
ev
.
button
.
x
,
ev
.
button
.
y
),
40
,
RED
);
idom
[
db
]
->
rajzol
();
++
db
;
SDL_RenderPresent
(
renderer
);
}
break
;
case
SDL_MOUSEBUTTONUP
:
// egérgomb kezelése
if
(
ev
.
button
.
button
==
SDL_BUTTON_LEFT
)
drag
=
false
;
break
;
}
}
for
(
int
i
=
0
;
i
<
db
;
i
++
)
/// fel kell szabadítani minden objektumot
delete
idom
[
i
];
SDL_Quit
();
/// SDL mellékhatása, hogy közvetlenül meg kell hívni a memtrace ellenőrző
/// funkcióját (exit ágon azért is lezárja a standard hibakimenetet).
memtrace
::
mem_check
();
return
0
;
}
SDL_alakzat/szakasz.cpp
View file @
e2667b8f
...
...
@@ -6,6 +6,7 @@
/// Szakaszt rajzoló rajzol fv.
void
Szakasz
::
rajzol
()
const
{
thickLineColor
(
scr
,
p0
.
x
,
p0
.
y
,
pv
.
x
+
p0
.
x
,
pv
.
y
+
p0
.
y
,
3
,
sz
);
SDL_Flip
(
scr
);
/// nem a legjobb megoldás a villogás miatt, de most elmegy
thickLineColor
(
renderer
,
p0
.
x
,
p0
.
y
,
pv
.
x
+
p0
.
x
,
pv
.
y
+
p0
.
y
,
3
,
sz
);
// SDL_RenderPresent(renderer);
// SDL_Flip(scr); /// nem a legjobb megoldás a villogás miatt, de most elmegy
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment