瀏覽代碼

New example added

Replaced ex06b (incomplete) by a new useful one
raysan5 11 年之前
父節點
當前提交
989bc0fe9d
共有 5 個文件被更改,包括 150 次插入50 次删除
  1. 150 0
      examples/ex06b_logo_anim.c
  2. 二進制
      examples/ex06b_logo_anim.exe
  3. 二進制
      examples/ex06b_logo_anim.png
  4. 0 50
      examples/ex06b_shape_select.c
  5. 二進制
      examples/ex06b_shape_select.png

+ 150 - 0
examples/ex06b_logo_anim.c

@@ -0,0 +1,150 @@
+/*******************************************************************************************
+*
+*   raylib example 06b - raylib Logo Animation
+*
+*   This example has been created using raylib 1.0 (www.raylib.com)
+*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+*   Copyright (c) 2013 Ramon Santamaria (Ray San - [email protected])
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+// Useful function for fade-ins and fade-outs
+Color Fade(Color col, float alpha)
+{
+    return (Color){col.r, col.g, col.b, col.a*alpha};
+}
+
+int main()
+{
+    // Initialization
+    //--------------------------------------------------------------------------------------
+    int screenWidth = 800;
+    int screenHeight = 450;
+    
+    int logoPositionX = screenWidth/2 - 128;
+    int logoPositionY = screenHeight/2 - 128;
+    
+    int framesCounter = 0;
+    int lettersCount = 0;
+    
+    int topSideRecWidth = 16;
+    int leftSideRecHeight = 16;
+    
+    int bottomSideRecWidth = 16;
+    int rightSideRecHeight = 16;
+    
+    char raylib[8] = "       ";     // raylib text array, max 8 letters
+    
+    int state = 0;                  // Tracking animation states (State Machine)
+    
+    float alpha = 1.0;
+    
+    InitWindow(screenWidth, screenHeight, "raylib example 06b - raylib logo animation");
+    
+    SetTargetFPS(60);
+    //--------------------------------------------------------------------------------------
+    
+    // Main game loop
+    while (!WindowShouldClose())    // Detect window close button or ESC key
+    {
+        // Update
+        //----------------------------------------------------------------------------------
+        if (state == 0)                 // State 0: Small box blinking
+        {
+            framesCounter++;
+        
+            if (framesCounter == 120)
+            {                
+                state = 1;
+                framesCounter = 0;      // Reset counter... will be used later...
+            }
+        }
+        else if (state == 1)            // State 1: Top and left bars growing
+        {
+            topSideRecWidth += 4;
+            leftSideRecHeight += 4;
+            
+            if (topSideRecWidth == 256) state = 2;
+        }
+        else if (state == 2)            // State 2: Bottom and right bars growing
+        {
+            bottomSideRecWidth += 4;
+            rightSideRecHeight += 4;
+            
+            if (bottomSideRecWidth == 256) state = 3;
+        }
+        else if (state == 3)            // State 3: Letters appearing (one by one)
+        {
+            framesCounter++;
+            
+            if (framesCounter/12)       // Every 12 frames, one more letter!
+            {    
+                lettersCount++;
+                framesCounter = 0;
+            }
+            
+            switch (lettersCount)
+            {
+                case 1: raylib[0] = 'r'; break;
+                case 2: raylib[1] = 'a'; break;
+                case 3: raylib[2] = 'y'; break;
+                case 4: raylib[3] = 'l'; break;
+                case 5: raylib[4] = 'i'; break;
+                case 6: raylib[5] = 'b'; break;
+                default: break;
+            }
+            
+            if (lettersCount >= 10)     // When all letters have appeared, just fade out everything
+            {
+                alpha -= 0.02;
+                
+                if (alpha <= 0) alpha = 0;
+            }
+        }
+        //----------------------------------------------------------------------------------
+        
+        // Draw
+        //----------------------------------------------------------------------------------
+        BeginDrawing();
+        
+            ClearBackground(RAYWHITE);
+            
+            if (state == 0)
+            {
+                if ((framesCounter/15)%2) DrawRectangle(logoPositionX, logoPositionY, 16, 16, BLACK);
+            }
+            else if (state == 1)
+            {
+                DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, BLACK);
+                DrawRectangle(logoPositionX, logoPositionY, 16, leftSideRecHeight, BLACK);
+            }
+            else if (state == 2)
+            {
+                DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, BLACK);
+                DrawRectangle(logoPositionX, logoPositionY, 16, leftSideRecHeight, BLACK);
+                
+                DrawRectangle(logoPositionX + 240, logoPositionY, 16, rightSideRecHeight, BLACK);
+                DrawRectangle(logoPositionX, logoPositionY + 240, bottomSideRecWidth, 16, BLACK);
+            }
+            else if (state == 3)
+            {
+                DrawRectangle(logoPositionX, logoPositionY, 256, 256, Fade(BLACK, alpha));
+                DrawRectangle(screenWidth/2 - 112, screenHeight/2 - 112, 224, 224, Fade(RAYWHITE, alpha));
+                
+                DrawText(raylib, 356, 273, 50, Fade(BLACK, alpha));
+            } 
+        
+        EndDrawing();
+        //----------------------------------------------------------------------------------
+    }
+
+    // De-Initialization
+    //--------------------------------------------------------------------------------------
+    CloseWindow();        // Close window and OpenGL context
+    //--------------------------------------------------------------------------------------
+    
+    return 0;
+}

二進制
examples/ex06b_logo_anim.exe


二進制
examples/ex06b_logo_anim.png


+ 0 - 50
examples/ex06b_shape_select.c

@@ -1,50 +0,0 @@
-/*******************************************************************************************
-*
-*   raylib example 06b - Shape selection by mouse (collision detection)
-*
-*   This example has been created using raylib 1.0 (www.raylib.com)
-*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-*   Copyright (c) 2013 Ramon Santamaria (Ray San - [email protected])
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-int main()
-{
-    // Initialization
-    //--------------------------------------------------------------------------------------
-    int screenWidth = 800;
-    int screenHeight = 450;
-
-    InitWindow(screenWidth, screenHeight, "raylib example 06b - shape selection");
-    //--------------------------------------------------------------------------------------
-    
-    // Main game loop
-    while (!WindowShouldClose())    // Detect window close button or ESC key
-    {
-        // Update
-        //----------------------------------------------------------------------------------
-        // TODO: Update your variables here
-        //----------------------------------------------------------------------------------
-        
-        // Draw
-        //----------------------------------------------------------------------------------
-        BeginDrawing();
-        
-            ClearBackground(RAYWHITE);
-            
-            // TODO: Comming soon...
-       
-        EndDrawing();
-        //----------------------------------------------------------------------------------
-    }
-
-    // De-Initialization
-    //--------------------------------------------------------------------------------------
-    CloseWindow();                // Close window and OpenGL context
-    //--------------------------------------------------------------------------------------
-    
-    return 0;
-}

二進制
examples/ex06b_shape_select.png