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
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
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