@@ -9,7 +9,7 @@ typedef enum
99
1010typedef struct
1111{
12- Image idle[ 4 ] , walk[ 6 ] , jump[ 8 ] ;
12+ FrameSet idle, walk, jump;
1313 Sprite sprite;
1414 State state;
1515 int direction; // 1 for right, -1 for left
@@ -19,37 +19,37 @@ Monster pinkMonster;
1919
2020typedef struct
2121{
22- Image idle[ 18 ] , walk[ 25 ] , jump[ 25 ] ;
22+ FrameSet idle, walk, jump;
2323 Sprite sprite;
2424 State state;
2525 int direction; // 1 for right, -1 for left
2626} Golem;
2727
28+ Image bg;
29+
2830Golem golem;
2931
3032void loadPinkMonster ()
3133{
32- iLoadFramesFromSheet (pinkMonster.idle , " assets/images/sprites/1 Pink_Monster/Pink_Monster_Idle_4.png" , 1 , 4 );
33- iLoadFramesFromSheet (pinkMonster.walk , " assets/images/sprites/1 Pink_Monster/Pink_Monster_Walk_6.png" , 1 , 6 );
34- iLoadFramesFromSheet (pinkMonster.jump , " assets/images/sprites/1 Pink_Monster/Pink_Monster_Jump_8.png" , 1 , 8 );
34+ iLoadFramesFromSheet (& pinkMonster.idle , " assets/images/sprites/1 Pink_Monster/Pink_Monster_Idle_4.png" , 1 , 4 );
35+ iLoadFramesFromSheet (& pinkMonster.walk , " assets/images/sprites/1 Pink_Monster/Pink_Monster_Walk_6.png" , 1 , 6 );
36+ iLoadFramesFromSheet (& pinkMonster.jump , " assets/images/sprites/1 Pink_Monster/Pink_Monster_Jump_8.png" , 1 , 8 );
3537
36- iInitSprite (&pinkMonster.sprite );
37- iChangeSpriteFrames (&pinkMonster.sprite , pinkMonster.idle , 4 );
38- iSetSpritePosition (&pinkMonster.sprite , 250 , 0 );
38+ iChangeSpriteFrames (&pinkMonster.sprite , &pinkMonster.idle );
39+ iSetSpritePosition (&pinkMonster.sprite , 250 , 110 );
3940 iScaleSprite (&pinkMonster.sprite , 3.0 );
4041 pinkMonster.state = IDLE ;
4142 pinkMonster.direction = 1 ; // 1 for right, -1 for left
4243}
4344
4445void loadGolem ()
4546{
46- iLoadFramesFromFolder (golem.idle , " assets/images/sprites/Golem_2/Idle Blinking" );
47- iLoadFramesFromFolder (golem.walk , " assets/images/sprites/Golem_2/Walking" );
48- iLoadFramesFromFolder (golem.jump , " assets/images/sprites/Golem_2/Jump Start" );
47+ iLoadFramesFromFolder (& golem.idle , " assets/images/sprites/Golem_2/Idle Blinking" );
48+ iLoadFramesFromFolder (& golem.walk , " assets/images/sprites/Golem_2/Walking" );
49+ iLoadFramesFromFolder (& golem.jump , " assets/images/sprites/Golem_2/Jump Start" );
4950
50- iInitSprite (&golem.sprite );
51- iChangeSpriteFrames (&golem.sprite , golem.idle , 18 );
52- iSetSpritePosition (&golem.sprite , 250 , -75 );
51+ iChangeSpriteFrames (&golem.sprite , &golem.idle );
52+ iSetSpritePosition (&golem.sprite , 250 , 35 );
5353 iScaleSprite (&golem.sprite , 0.5 );
5454 iMirrorSprite (&golem.sprite , HORIZONTAL );
5555 golem.state = IDLE ;
@@ -67,14 +67,14 @@ void iAnim()
6767 !isSpecialKeyPressed (GLUT_KEY_RIGHT ))
6868 {
6969 pinkMonster.state = IDLE ;
70- iChangeSpriteFrames (&pinkMonster.sprite , pinkMonster.idle , 4 );
70+ iChangeSpriteFrames (&pinkMonster.sprite , & pinkMonster.idle );
7171 }
7272 break ;
7373 case JUMP :
7474 if (!isSpecialKeyPressed (GLUT_KEY_UP ))
7575 {
7676 pinkMonster.state = IDLE ;
77- iChangeSpriteFrames (&pinkMonster.sprite , pinkMonster.idle , 4 );
77+ iChangeSpriteFrames (&pinkMonster.sprite , & pinkMonster.idle );
7878 }
7979 break ;
8080 }
@@ -90,6 +90,7 @@ void iDraw()
9090 iClear ();
9191 iSetColor (255 , 255 , 255 );
9292 iFilledRectangle (0 , 0 , 800 , 400 );
93+ iShowLoadedImage (0 , 0 , &bg);
9394 iShowSprite (&golem.sprite );
9495 iShowSprite (&pinkMonster.sprite );
9596
@@ -144,11 +145,12 @@ void iSpecialKeyPress(unsigned char key)
144145 }
145146 else
146147 {
147- pinkMonster.sprite .x --;
148+ golem.sprite .x += 2 ;
149+ iWrapImage (&bg, 2 );
148150 if (pinkMonster.state != WALK )
149151 {
150152 pinkMonster.state = WALK ;
151- iChangeSpriteFrames (&pinkMonster.sprite , pinkMonster.walk , 6 );
153+ iChangeSpriteFrames (&pinkMonster.sprite , & pinkMonster.walk );
152154 }
153155 }
154156 }
@@ -161,11 +163,12 @@ void iSpecialKeyPress(unsigned char key)
161163 }
162164 else
163165 {
164- pinkMonster.sprite .x ++;
166+ golem.sprite .x -= 2 ;
167+ iWrapImage (&bg, -2 );
165168 if (pinkMonster.state != WALK )
166169 {
167170 pinkMonster.state = WALK ;
168- iChangeSpriteFrames (&pinkMonster.sprite , pinkMonster.walk , 6 );
171+ iChangeSpriteFrames (&pinkMonster.sprite , & pinkMonster.walk );
169172 }
170173 }
171174 }
@@ -175,7 +178,7 @@ void iSpecialKeyPress(unsigned char key)
175178 if (pinkMonster.state != JUMP )
176179 {
177180 pinkMonster.state = JUMP ;
178- iChangeSpriteFrames (&pinkMonster.sprite , pinkMonster.jump , 8 );
181+ iChangeSpriteFrames (&pinkMonster.sprite , & pinkMonster.jump );
179182 }
180183 }
181184 if (key == GLUT_KEY_DOWN )
@@ -190,6 +193,8 @@ int main(int argc, char *argv[])
190193 iSetTimer (100 , iAnim);
191194 loadPinkMonster ();
192195 loadGolem ();
196+ iLoadImage (&bg, " assets/images/background.jpg" );
197+ iResizeImage (&bg, 800 , 400 );
193198 iOpenWindow (800 , 400 , " BattleDemo" );
194199 return 0 ;
195200}
0 commit comments