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
503243fb
authored
Mar 09, 2020
by
Szeberényi Imre
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://git.ik.bme.hu/Prog2/eloadas_peldak/ea_05
parents
e01d2e5e
e2667b8f
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
59 additions
and
37 deletions
+59
-37
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
+42
-22
SDL_alakzat/szakasz.cpp
+3
-2
No files found.
SDL_alakzat/alakzat.cbp
View file @
503243fb
...
@@ -35,15 +35,15 @@
...
@@ -35,15 +35,15 @@
</Compiler>
</Compiler>
<Linker>
<Linker>
<Add
library=
"mingw32"
/>
<Add
library=
"mingw32"
/>
<Add
library=
"SDLmain"
/>
<Add
library=
"SDL2main"
/>
<Add
library=
"SDL.dll"
/>
<Add
library=
"SDL2"
/>
<Add
library=
"SDL2_gfx"
/>
<Add
library=
"SDL2_image"
/>
<Add
library=
"SDL2_ttf"
/>
<Add
library=
"user32"
/>
<Add
library=
"user32"
/>
<Add
library=
"dxguid"
/>
<Add
library=
"gdi32"
/>
<Add
library=
"gdi32"
/>
<Add
library=
"winmm"
/>
<Add
library=
"winmm"
/>
<Add
library=
"dxguid"
/>
<Add
library=
"SDL_gfx"
/>
<Add
library=
"SDL_image"
/>
<Add
library=
"SDL_ttf"
/>
<Add
directory=
"$(#sdl.lib)"
/>
<Add
directory=
"$(#sdl.lib)"
/>
</Linker>
</Linker>
<Unit
filename=
"alakzat.cpp"
/>
<Unit
filename=
"alakzat.cpp"
/>
...
...
SDL_alakzat/alakzat.cpp
View file @
503243fb
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
*/
*/
#include "alakzat.h"
#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
/// mozgat - eltolja az alakzat origóját
/// @param d - eltolás
/// @param d - eltolás
...
...
SDL_alakzat/alakzat.h
View file @
503243fb
...
@@ -4,8 +4,8 @@
...
@@ -4,8 +4,8 @@
*/
*/
#ifndef ALAKZAT_H
#ifndef ALAKZAT_H
#define ALAKZAT_H
#define ALAKZAT_H
#include <SDL.h>
#include <SDL
2/sdl
.h>
#include <SDL_gfxPrimitives.h>
#include <SDL
2/SDL2
_gfxPrimitives.h>
#include "pont.h"
#include "pont.h"
#include "szin.h"
#include "szin.h"
...
@@ -15,7 +15,7 @@ class Alakzat {
...
@@ -15,7 +15,7 @@ class Alakzat {
protected
:
protected
:
Pont
p0
;
///< alakzat origója
Pont
p0
;
///< alakzat origója
Szin
sz
;
///< alakzat színe
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:
public:
/// Konstruktor
/// Konstruktor
/// @param p0 - kezdőpont
/// @param p0 - kezdőpont
...
@@ -28,7 +28,7 @@ public:
...
@@ -28,7 +28,7 @@ public:
/// suface beállítása
/// suface beállítása
/// @param s - SDL surface
/// @param s - SDL surface
static
void
set
Surface
(
SDL_Surface
*
s
)
{
scr
=
s
;
}
static
void
set
Renderer
(
SDL_Renderer
*
r
)
{
renderer
=
r
;
}
/// rajzol
/// rajzol
virtual
void
rajzol
()
const
=
0
;
// tisztán virtuális
virtual
void
rajzol
()
const
=
0
;
// tisztán virtuális
...
...
SDL_alakzat/kor.cpp
View file @
503243fb
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
/// Kört rajzoló rajzol fv.
/// Kört rajzoló rajzol fv.
void
Kor
::
rajzol
()
const
{
void
Kor
::
rajzol
()
const
{
filledCircleColor
(
scr
,
p0
.
x
,
p0
.
y
,
r
,
sz
);
filledCircleColor
(
renderer
,
p0
.
x
,
p0
.
y
,
r
,
sz
);
SDL_Flip
(
scr
);
/// nem a legjobb megoldás a villogás miatt, de most elmegy
// SDL_RenderPresent(renderer);
// SDL_Flip(scr); /// nem a legjobb megoldás a villogás miatt, de most elmegy
}
}
SDL_alakzat/main.cpp
View file @
503243fb
...
@@ -17,30 +17,34 @@ inline int delta(int x) {
...
@@ -17,30 +17,34 @@ inline int delta(int x) {
#ifdef DEMO
#ifdef DEMO
return
0
;
return
0
;
#else
#else
return
x
==
0
?
0
:
x
<
0
?
-
1
:
1
;
return
x
==
0
?
0
:
x
<
0
?
-
1
0
:
10
;
#endif // DEMO
#endif // DEMO
}
}
/// segédfüggvény az SDL inicializálásához
/// segédfüggvény az SDL inicializálásához
/// @return suface pointer vagy 0
/// @return renderer pointer vagy 0
SDL_Surface
*
init
()
{
SDL_Renderer
*
init
()
{
if
(
SDL_Init
(
SDL_INIT_VIDEO
)
<
0
)
if
(
SDL_Init
(
SDL_INIT_EVERYTHING
)
<
0
)
{
return
NULL
;
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.
return
sdlRenderer
;
/// 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
);
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
SDL_
Surface
*
screen
=
init
();
SDL_
Renderer
*
renderer
=
init
();
if
(
screen
==
NULL
)
{
if
(
renderer
==
NULL
)
{
std
::
cerr
<<
"Nem sikerult az
SDL INIT:
"
<<
SDL_GetError
()
<<
std
::
endl
;
std
::
cerr
<<
"Nem sikerult az
inicializálás
"
<<
SDL_GetError
()
<<
std
::
endl
;
return
1
;
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
const
int
N
=
100
;
// max 100 alakzatunk lehet
Alakzat
*
idom
[
N
];
Alakzat
*
idom
[
N
];
...
@@ -55,36 +59,52 @@ int main(int argc, char* argv[]) {
...
@@ -55,36 +59,52 @@ int main(int argc, char* argv[]) {
/// Eseménykezelõ ciklus.
/// Eseménykezelõ ciklus.
SDL_Event
ev
;
SDL_Event
ev
;
while
(
SDL_WaitEvent
(
&
ev
)
&&
ev
.
type
!=
SDL_QUIT
)
{
while
(
SDL_WaitEvent
(
&
ev
)
&&
ev
.
type
!=
SDL_QUIT
)
{
static
bool
drag
=
false
;
switch
(
ev
.
type
)
{
switch
(
ev
.
type
)
{
case
SDL_MOUSEMOTION
:
{
// egérmozgás esemény
case
SDL_MOUSEMOTION
:
// egérmozgás esemény
if
(
drag
)
{
int
dx
=
delta
(
ev
.
motion
.
xrel
);
// merre mozdult ?
int
dx
=
delta
(
ev
.
motion
.
xrel
);
// merre mozdult ?
int
dy
=
delta
(
ev
.
motion
.
yrel
);
int
dy
=
delta
(
ev
.
motion
.
yrel
);
for
(
int
i
=
0
;
i
<
db
;
i
++
)
{
// végigmegyünk az összesen
for
(
int
i
=
0
;
i
<
db
;
i
++
)
{
// végigmegyünk az összesen
idom
[
i
]
->
mozgat
(
Pont
(
dx
,
dy
));
// kicsit mozdítunk rajta
idom
[
i
]
->
mozgat
(
Pont
(
dx
,
dy
));
// kicsit mozdítunk rajta
idom
[
i
]
->
rajzol
();
// kirajzoljuk
idom
[
i
]
->
rajzol
();
// kirajzoljuk
}
}
SDL_RenderPresent
(
renderer
);
}
break
;
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
case
SDL_MOUSEBUTTONDOWN
:
// egérgomb kezelése
if
(
db
<
N
)
{
if
(
ev
.
button
.
button
==
SDL_BUTTON_LEFT
)
{
if
(
ev
.
button
.
button
==
SDL_BUTTON_LEFT
)
drag
=
true
;
idom
[
db
]
=
new
Szakasz
(
Pont
(
ev
.
button
.
x
,
ev
.
button
.
y
),
}
else
if
(
db
<
N
)
{
40
,
80
,
GREEN
);
if
(
ev
.
button
.
button
==
SDL_BUTTON_MIDDLE
)
idom
[
db
]
=
new
Szakasz
(
Pont
(
ev
.
button
.
x
,
ev
.
button
.
y
),
40
,
80
,
GREEN
);
else
else
idom
[
db
]
=
new
Kor
(
Pont
(
ev
.
button
.
x
,
ev
.
button
.
y
),
40
,
RED
);
idom
[
db
]
=
new
Kor
(
Pont
(
ev
.
button
.
x
,
ev
.
button
.
y
),
40
,
RED
);
idom
[
db
]
->
rajzol
();
idom
[
db
]
->
rajzol
();
++
db
;
++
db
;
SDL_RenderPresent
(
renderer
);
}
}
break
;
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
for
(
int
i
=
0
;
i
<
db
;
i
++
)
/// fel kell szabadítani minden objektumot
delete
idom
[
i
];
delete
idom
[
i
];
SDL_Quit
();
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
;
return
0
;
}
}
SDL_alakzat/szakasz.cpp
View file @
503243fb
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
/// Szakaszt rajzoló rajzol fv.
/// Szakaszt rajzoló rajzol fv.
void
Szakasz
::
rajzol
()
const
{
void
Szakasz
::
rajzol
()
const
{
thickLineColor
(
scr
,
p0
.
x
,
p0
.
y
,
pv
.
x
+
p0
.
x
,
pv
.
y
+
p0
.
y
,
3
,
sz
);
thickLineColor
(
renderer
,
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
// 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