Beginners_-_Structs_arrays2.c 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include "raylib.h"
  2. #define MAX_BULLETS 10
  3. struct blueBullet{
  4. bool active;
  5. Vector2 position;
  6. Vector2 movement;
  7. }blueBullet;
  8. int main(void)
  9. {
  10. // Initialization
  11. //--------------------------------------------------------------------------------------
  12. const int screenWidth = 800;
  13. const int screenHeight = 450;
  14. InitWindow(screenWidth, screenHeight, "raylib example.");
  15. // This is one way to create a new array of struct!
  16. struct blueBullet arr_blueBullet[2] = {
  17. {true,(Vector2){400,200},(Vector2){2.5f,0.0f}},
  18. {true,(Vector2){400,200},(Vector2){-2.5f,0.0f}}
  19. };
  20. // This is another way of creating a array of struct.
  21. struct blueBullet arr_blueBullet2[MAX_BULLETS];
  22. for(int i=0;i<MAX_BULLETS;i++){
  23. arr_blueBullet2[i].active = true;
  24. arr_blueBullet2[i].position = (Vector2){400,200};
  25. arr_blueBullet2[i].movement = (Vector2){(float)GetRandomValue(-5,5),(float)GetRandomValue(-5,5)};
  26. }
  27. SetTargetFPS(60); // Set our game to run at 60 frames-per-second
  28. //--------------------------------------------------------------------------------------
  29. // Main game loop
  30. while (!WindowShouldClose()) // Detect window close button or ESC key
  31. {
  32. // Update
  33. //----------------------------------------------------------------------------------
  34. // Update blueBullets
  35. for(int i=0;i<2;i++){
  36. if(arr_blueBullet[i].active){
  37. arr_blueBullet[i].position = (Vector2){ arr_blueBullet[i].position.x+arr_blueBullet[i].movement.x,
  38. arr_blueBullet[i].position.y+arr_blueBullet[i].movement.y};
  39. // If outside the screen reset position.
  40. if( arr_blueBullet[i].position.x<-10 ||
  41. arr_blueBullet[i].position.x>screenWidth+10 ||
  42. arr_blueBullet[i].position.y<-10 ||
  43. arr_blueBullet[i].position.y>screenHeight-10){
  44. arr_blueBullet[i].position = (Vector2){400,200};
  45. }
  46. }
  47. }
  48. // Update bluebullets2
  49. for(int i=0;i<MAX_BULLETS;i++){
  50. if(arr_blueBullet2[i].active){
  51. arr_blueBullet2[i].position = (Vector2){ arr_blueBullet2[i].position.x+arr_blueBullet2[i].movement.x,
  52. arr_blueBullet2[i].position.y+arr_blueBullet2[i].movement.y};
  53. // If outside the screen reset position.
  54. if( arr_blueBullet2[i].position.x<-10 ||
  55. arr_blueBullet2[i].position.x>screenWidth+10 ||
  56. arr_blueBullet2[i].position.y<-10 ||
  57. arr_blueBullet2[i].position.y>screenHeight-10){
  58. arr_blueBullet2[i].position = (Vector2){400,200};
  59. }
  60. }
  61. }
  62. //----------------------------------------------------------------------------------
  63. // Draw
  64. //----------------------------------------------------------------------------------
  65. BeginDrawing();
  66. ClearBackground(RAYWHITE);
  67. // Draw blueBullets
  68. for(int i=0;i<2;i++){
  69. if(arr_blueBullet[i].active){
  70. DrawRectangle(arr_blueBullet[i].position.x,arr_blueBullet[i].position.y,5,5,BLUE);
  71. }
  72. }
  73. // Draw blueBullets2
  74. for(int i=0;i<MAX_BULLETS;i++){
  75. if(arr_blueBullet2[i].active){
  76. DrawRectangle(arr_blueBullet2[i].position.x,arr_blueBullet2[i].position.y,5,5,BLUE);
  77. }
  78. }
  79. EndDrawing();
  80. //----------------------------------------------------------------------------------
  81. }
  82. // De-Initialization
  83. //--------------------------------------------------------------------------------------
  84. CloseWindow(); // Close window and OpenGL context
  85. //--------------------------------------------------------------------------------------
  86. return 0;
  87. }