From 80d92c10bf4a646861b27c634c765b7f7ce63c69 Mon Sep 17 00:00:00 2001
From: A404M <ahmadmahmoudiprogrammer@gmail.com>
Date: Thu, 29 May 2025 20:04:12 +0330
Subject: fix bug in array

---
 code/lib/io.felan |  6 ++++
 code/main.felan   | 69 +------------------------------------------
 code/main2.felan  | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 94 insertions(+), 68 deletions(-)
 create mode 100644 code/main2.felan

(limited to 'code')

diff --git a/code/lib/io.felan b/code/lib/io.felan
index 97be3b1..1fe7cf9 100644
--- a/code/lib/io.felan
+++ b/code/lib/io.felan
@@ -70,5 +70,11 @@ _print_unsigned :: (comptime t:type, value:t) -> void {
     value != @cast(0,t);
   } {}
 
+  while i < NUMBERS_SIZE - 1 {
+    @putc(numbers[i]);
+    i += 1;
+  }
+  return;
+
   puts(&numbers[i]);
 };
diff --git a/code/main.felan b/code/main.felan
index cdaeee8..90b1d08 100644
--- a/code/main.felan
+++ b/code/main.felan
@@ -1,73 +1,6 @@
 @import("basic.felan");
 
-/*
-libc :: @c_library("/lib/libc.so.6");
-puts :: @c_function(libc,"puts",(*u8)->i32);
-sleep :: @c_function(libc,"sleep",(i32)->i32);
-*/
-
-raylib :: @c_library("/lib/libraylib.so.5.5.0");
-InitWindow :: @c_function(raylib,"InitWindow",(i32,i32,*u8)->void);
-WindowShouldClose :: @c_function(raylib,"WindowShouldClose",()->bool);
-BeginDrawing :: @c_function(raylib,"BeginDrawing",()->void);
-EndDrawing :: @c_function(raylib,"EndDrawing",()->void);
-CloseWindow :: @c_function(raylib,"CloseWindow",()->void);
-ClearBackground :: @c_function(raylib,"ClearBackground",(Color)->void);
-DrawText :: @c_function(raylib,"DrawText",(*u8,i32,i32,i32,Color)->void);
-// void DrawRectangle(int posX, int posY, int width, int height, Color color); 
-DrawRectangle :: @c_function(raylib,"DrawRectangle",(posX:i32,posY:i32,width:i32,height:i32,color:Color)->void);
-
-Color :: struct {
-  r:u8;
-  g:u8;
-  b:u8;
-  a:u8;
-};
-
 main :: ()->void{
-  print("hello");
-  return;
-  b := "raylib [core] example - basic window\0";
-  c := "Congrats! You created your first window!\0";
-  str := &b[0];
-  str2 := &c[0];
-  screenWidth :i32: 800;
-  screenHeight :i32: 450;
-  a : u8 : 255;
-  b : u8 : 0;
-  WHITE :: color(a,a,a,a);
-  BLACK :: color(@cast(0xff0000ff,u32));
-  InitWindow(screenWidth,screenHeight,str);
-  rect_posx :i32= 0;
-  rect_posy :i32= 0;
-  while !WindowShouldClose() {
-    BeginDrawing();
-    ClearBackground(WHITE);
-    DrawRectangle(rect_posx,rect_posy,@cast(200,i32),@cast(40,i32),color(@cast(0x00ffff,u32)));
-    DrawText(str2,@cast(190,i32),@cast(200,i32),@cast(20,i32),BLACK);
-    EndDrawing();
-    /*
-    rect_posx += @cast(1,i32);
-    rect_posy += @cast(1,i32);
-    */
-  }
-  CloseWindow();
+  print(1234);
 };
 
-color :: (a:u8,r:u8,g:u8,b:u8)->Color{
-  c : Color = undefined;
-  c.r = r;
-  c.g = g;
-  c.b = b;
-  c.a = a;
-  return c;
-};
-
-color :: (value:u32)->Color{
-  c : Color = undefined;
-  c.r = @cast((value&@cast(0xff000000,u32))>>@cast(6*4,u32),u8);
-  c.g = @cast((value&@cast(0x00ff0000,u32))>>@cast(4*4,u32),u8);
-  c.b = @cast((value&@cast(0x0000ff00,u32))>>@cast(2*4,u32),u8);
-  c.a = @cast((value&@cast(0x000000ff,u32))>>@cast(0*4,u32),u8);
-  return c;
-};
diff --git a/code/main2.felan b/code/main2.felan
new file mode 100644
index 0000000..ffa3a5b
--- /dev/null
+++ b/code/main2.felan
@@ -0,0 +1,87 @@
+@import("basic.felan");
+
+raylib :: @c_library("/lib/libraylib.so.5.5.0");
+InitWindow :: @c_function(raylib,"InitWindow",(i32,i32,*u8)->void);
+WindowShouldClose :: @c_function(raylib,"WindowShouldClose",()->bool);
+BeginDrawing :: @c_function(raylib,"BeginDrawing",()->void);
+EndDrawing :: @c_function(raylib,"EndDrawing",()->void);
+CloseWindow :: @c_function(raylib,"CloseWindow",()->void);
+ClearBackground :: @c_function(raylib,"ClearBackground",(Color)->void);
+DrawText :: @c_function(raylib,"DrawText",(*u8,i32,i32,i32,Color)->void);
+// void DrawRectangle(int posX, int posY, int width, int height, Color color); 
+DrawRectangle :: @c_function(raylib,"DrawRectangle",(posX:i32,posY:i32,width:i32,height:i32,color:Color)->void);
+
+Color :: struct {
+  r:u8;
+  g:u8;
+  b:u8;
+  a:u8;
+};
+
+main :: ()->void{
+  b := "raylib [core] example - basic window\0";
+  c := "Congrats! You created your first window!\0";
+  str := &b[0];
+  str2 := &c[0];
+  screenWidth :i32: 800;
+  screenHeight :i32: 450;
+  a : u8 : 255;
+  b : u8 : 0;
+  WHITE :: color(a,a,a,a);
+  BLACK :: color(@cast(0xff0000ff,u32));
+  InitWindow(screenWidth,screenHeight,str);
+  rect_posx :i32= 0;
+  rect_posy :i32= 0;
+  dx : i32 = 1;
+  dy : i32 = 1;
+  while !WindowShouldClose() {
+    BeginDrawing();
+    ClearBackground(WHITE);
+    DrawRectangle(rect_posx,rect_posy,@cast(200,i32),@cast(40,i32),color(@cast(0x00ffff,u32)));
+    DrawText(str2,@cast(190,i32),@cast(200,i32),@cast(20,i32),BLACK);
+    EndDrawing();
+    rect_posx += dx;
+    rect_posy += dy;
+    /*
+    print(rect_posx);
+    print_char(' ');
+    print(rect_posy);
+    print_char('\n');
+    */
+    if rect_posx >= screenWidth {
+      print("hello");
+      print(dx);
+      print("\n");
+      dx = @cast(-1,i32);
+    }else if rect_posx < @cast(0,i32) {
+      dx = @cast(1,i32);
+    }
+    if rect_posy >= screenHeight {
+      print("hi");
+      print(dy);
+      print("\n");
+      dy = @cast(-@cast(1,i32),i32);
+    }else if rect_posy < @cast(0,i32) {
+      dy = @cast(1,i32);
+    }
+  }
+  CloseWindow();
+};
+
+color :: (a:u8,r:u8,g:u8,b:u8)->Color{
+  c : Color = undefined;
+  c.r = r;
+  c.g = g;
+  c.b = b;
+  c.a = a;
+  return c;
+};
+
+color :: (value:u32)->Color{
+  c : Color = undefined;
+  c.r = @cast((value&@cast(0xff000000,u32))>>@cast(6*4,u32),u8);
+  c.g = @cast((value&@cast(0x00ff0000,u32))>>@cast(4*4,u32),u8);
+  c.b = @cast((value&@cast(0x0000ff00,u32))>>@cast(2*4,u32),u8);
+  c.a = @cast((value&@cast(0x000000ff,u32))>>@cast(0*4,u32),u8);
+  return c;
+}
-- 
cgit v1.2.3