You are on page 1of 10

8

8.6: F1

8.7: F2

113

8.4

8.4

isClickedSelectBox
GetMouseInput

int GetMouseInput( void );

AND

MOUSE INPUT LEFT :


MOUSE INPUT RIGHT :
MOUSE INPUT MIDDLE :

if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 ) {


//
}

8.4: selection-04.cpp
1

# include "DxLib .h"

2
3
4

# define GRAPHIC_BACKGROUND_FILENAME "./ pic/back.png"


# define GRAPHIC_SELECTBOX_FILENAME "./ pic/ select .png"

5
6
7

# define SELECT_BOX_X 50
# define SELECT_BOX_Y 200

8
9
10

# define SELECT_BOX_WIDTH 700


# define SELECT_BOX_HEIGHT 50

11
12

# define SELECT_BOX_MESSAGE_Y 20

13
14

# define FONT_SIZE 16

15
16
17
18

# define SELECT_BOX_MESSAGE_MAX_LENGTH 100


# define SELECT_BOX_HIDE 0
# define SELECT_BOX_SHOW 1

19
20
21
22
23
24
25
26
27

// ( 2 )
//
int g_whiteColor ;
//
int g_backgroundGraphic ;
//
int g_selectBoxGraphicHandle ;
//

114

28
29
30

char g_selectBoxMessage [2][ SELECT_BOX_MESSAGE_MAX_LENGTH ];


// 0: 1:
int g_selectBoxVisibleFlag ;

31
32
33
34
35
36
37

//
void initSelectBox ();
int isContainMousePointer (int x, int y, int width , int height );
void drawSelectBox ();
void setSelectBoxMessage (const char* message1 , const char* message2 );
int isClickedSelectBox ();

38
39
40
41
42
43
44
45
46
47
48
49
50
51

//
void initSelectBox ()
{
//
g_whiteColor = GetColor (255 , 255, 255);
//
g_selectBoxGraphicHandle = LoadGraph ( GRAPHIC_SELECTBOX_FILENAME );
//
memset ( g_selectBoxMessage [0], 0, SELECT_BOX_MESSAGE_MAX_LENGTH );
memset ( g_selectBoxMessage [1], 0, SELECT_BOX_MESSAGE_MAX_LENGTH );
//
g_selectBoxVisibleFlag = SELECT_BOX_HIDE ;
}

52
53
54
55
56
57
58

//
// 1: 0:
int isContainMousePointer (int x, int y, int width , int height )
{
int mouseX , mouseY ;

59

//
GetMousePoint ( &mouseX , & mouseY );

60
61
62

//
if( ( mouseX >= x && mouseX <= x + width) &&
( mouseY >= y && mouseY <= y + height ) ) {
return 1;
}
return 0;

63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79

//
void setSelectBoxMessage (const char* message1 , const char* message2 )
{
//
strncpy ( g_selectBoxMessage [0], message1 , SELECT_BOX_MESSAGE_MAX_LENGTH );
strncpy ( g_selectBoxMessage [1], message2 , SELECT_BOX_MESSAGE_MAX_LENGTH );
//
g_selectBoxVisibleFlag = SELECT_BOX_SHOW ;
}

80
81
82
83
84
85
86
87
88
89
90
91
92

//
void drawSelectBox ()
{
//
if( g_selectBoxVisibleFlag ) {
// 1
if( isContainMousePointer ( SELECT_BOX_X , SELECT_BOX_Y ,
SELECT_BOX_WIDTH , SELECT_BOX_HEIGHT ) ) {
// 0
SetDrawBlendMode ( DX_BLENDMODE_ALPHA , 255 );
}else {
// 50%

115

8.4
SetDrawBlendMode ( DX_BLENDMODE_ALPHA , 128);
}
//
DrawGraph ( SELECT_BOX_X , SELECT_BOX_Y , g_selectBoxGraphicHandle , TRUE );

93
94
95
96
97

// 2
if( isContainMousePointer ( SELECT_BOX_X , SELECT_BOX_Y + SELECT_BOX_HEIGHT ,
SELECT_BOX_WIDTH , SELECT_BOX_HEIGHT ) ) {
// 0
SetDrawBlendMode ( DX_BLENDMODE_ALPHA , 255 );
}else {
// 50%
SetDrawBlendMode ( DX_BLENDMODE_ALPHA , 128);
}
// 2
DrawGraph ( SELECT_BOX_X , SELECT_BOX_Y + SELECT_BOX_HEIGHT ,
g_selectBoxGraphicHandle , TRUE );

98
99
100
101
102
103
104
105
106
107
108
109
110

//
SetDrawBlendMode ( DX_BLENDMODE_NOBLEND , 0 );

111
112
113

//
DrawString ( SELECT_BOX_X + 20, SELECT_BOX_Y + SELECT_BOX_MESSAGE_Y ,
g_selectBoxMessage [0], g_whiteColor );
DrawString ( SELECT_BOX_X + 20, SELECT_BOX_Y + SELECT_BOX_HEIGHT + SELECT_BOX_MESSAGE_Y ,
g_selectBoxMessage [1], g_whiteColor );

114
115
116
117
118

119
120

121
122
123
124
125
126
127
128
129
130

//
//0: 1: 1 2: 2
int isClickedSelectBox ()
{
//
if( g_selectBoxVisibleFlag ) {
//
//
if( ( GetMouseInput () & MOUSE_INPUT_LEFT ) != 0 ) {

131

if( isContainMousePointer ( SELECT_BOX_X , SELECT_BOX_Y ,


SELECT_BOX_WIDTH , SELECT_BOX_HEIGHT ) ) {
// 1
//
memset ( g_selectBoxMessage [0], 0, SELECT_BOX_MESSAGE_MAX_LENGTH );
memset ( g_selectBoxMessage [1], 0, SELECT_BOX_MESSAGE_MAX_LENGTH );
//
g_selectBoxVisibleFlag = SELECT_BOX_HIDE ;
// 1
return 1;
}else if( isContainMousePointer ( SELECT_BOX_X ,
SELECT_BOX_Y + SELECT_BOX_HEIGHT ,
SELECT_BOX_WIDTH , SELECT_BOX_HEIGHT ) ) {
// 2
//
memset ( g_selectBoxMessage [0], 0, SELECT_BOX_MESSAGE_MAX_LENGTH );
memset ( g_selectBoxMessage [1], 0, SELECT_BOX_MESSAGE_MAX_LENGTH );
//
g_selectBoxVisibleFlag = SELECT_BOX_HIDE ;
// 2
return 2;
}

132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153

}
}
return 0;

154
155
156
157

116

158
159
160
161
162
163
164
165
166
167
168
169
170

int WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hPrevInstance ,


LPSTR lpCmdLine , int nCmdShow )
{
//
ChangeWindowMode ( TRUE );
// 800 * 600
SetGraphMode ( 800, 600 , 16 ) ;
// D x L i b
if( DxLib_Init () == -1 ) {
return -1;
}

171
172
173

//
SetDrawScreen ( DX_SCREEN_BACK );

174
175
176

//
SetFontSize ( FONT_SIZE );

177
178
179

//
SetMouseDispFlag ( TRUE );

180
181
182
183
184

//
initSelectBox ();
//
g_backgroundGraphic = LoadGraph ( GRAPHIC_BACKGROUND_FILENAME );

185
186

int tmpClicked = 0; //

187
188
189

//
while( ProcessMessage () == 0 && CheckHitKey ( KEY_INPUT_ESCAPE ) == 0 ) {

190

// F 1
if( CheckHitKey ( KEY_INPUT_F1 ) ) {
setSelectBoxMessage (" F 1 1 ", " 2");
}

191
192
193
194
195

//
ClearDrawScreen ();

196
197
198

//
DrawGraph ( 0, 0, g_backgroundGraphic , FALSE );

199
200
201

//
drawSelectBox ();

202
203
204

//
tmpClicked = isClickedSelectBox ();
if( tmpClicked == 1 ) {
DrawString (50, 50, " 1 ", g_whiteColor );
}else if( tmpClicked == 2 ) {
DrawString (50, 50, " 2 ", g_whiteColor );
}

205
206
207
208
209
210
211
212

ScreenFlip ();

213
214

//
if( tmpClicked != 0 ) {
Sleep (1000);
}

215
216
217
218
219

220
221
222

DxLib_End ();
return 0;

117

8.4
223

8.8

8.8:

118

119

C
C

9.1

9.1

9.1:

9.1

ScriptInformation

9.1: script-01.cpp
1
2

# include <stdio .h>


# include <string .h>

3
4
5
6
7

// 1000
# define SCRIPT_MAX_LINE 1000
//
# define SCRIPT_MAX_STRING_LENGTH 300

8
9
10
11
12
13
14

typedef struct ScriptInformation_tag {


int maxLineNumber ;
//
int currentLine ;
//
const char* filename ;
//
char script [ SCRIPT_MAX_LINE ][ SCRIPT_MAX_STRING_LENGTH ];
} ScriptInformation ;

15
16
17
18
19
20
21
22
23

//
// -1 : 0 :
int loadScript (const char* filename , ScriptInformation * scriptInfo )
{
int pos;
char c;
//
FILE* fp;

24
25
26

//
memset ( scriptInfo , 0, sizeof ( ScriptInformation ) );

27
28
29
30
31
32
33
34

//
fp = fopen(filename , "r");
if( fp == NULL ) {
//
printf (" %s \ n", filename );
return -1;
}

35
36
37

// s c r i p t
pos = 0;

38
39
40
41
42
43
44
45

for( ;; ) {
//
c = fgetc( fp );
//
if( feof( fp ) ) {
break;
}

46
47
48
49
50
51

if( pos >= SCRIPT_MAX_STRING_LENGTH - 1 ) {


//1
printf ("error: (% d )", scriptInfo -> currentLine );
return -1;
}

52
53
54
55

//
if( c == \n ) {
//\0

120

9
scriptInfo -> script [ scriptInfo -> currentLine ][ pos ] = \0 ;
//
scriptInfo -> currentLine ++;
// 0
pos = 0;
}else {
//
scriptInfo -> script [ scriptInfo -> currentLine ][ pos ] = c;
//
pos ++;
}

56
57
58
59
60
61
62
63
64
65
66

}
//
scriptInfo -> maxLineNumber = scriptInfo -> currentLine ;
// 0
scriptInfo -> currentLine = 0;
//
scriptInfo -> filename = filename ;
return 0;

67
68
69
70
71
72
73
74

75
76

int main ()
{
int i;
ScriptInformation script ;

77
78
79
80
81

loadScript ( "./ script .txt", & script );

82
83

//10
for( i = 0; i < 10; i++ ) {
printf ("%d : %s\n", i + 1, script . script [i] );
}

84
85
86
87
88

return 0;

89

90

ScriptInformation script
(\n)

script.txt

@@message

2
3

@@message

121

9.2

1 : @@message
2 :
3 : @@message
4 :
5 :
6 :
7 :
8 :
9 :
10 :

9.2

(\t)
(\n)

9.2: script-02.cpp
1
2

# include <stdio .h>


# include <string .h>

3
4
5
6
7

// 1000
# define SCRIPT_MAX_LINE 1000
//
# define SCRIPT_MAX_STRING_LENGTH 300

8
9
10
11
12
13
14

typedef struct ScriptInformation_tag {


int maxLineNumber ;
//
int currentLine ;
//
const char* filename ;
//
char script [ SCRIPT_MAX_LINE ][ SCRIPT_MAX_STRING_LENGTH ];
} ScriptInformation ;

15
16
17
18
19
20
21
22
23

//
// -1 : 0 :
int loadScript (const char* filename , ScriptInformation * scriptInfo )
{
int pos;
char c;
//
FILE* fp;

24
25
26

//
memset ( scriptInfo , 0, sizeof ( ScriptInformation ) );

27
28
29
30

//
fp = fopen(filename , "r");
if( fp == NULL ) {

122

You might also like