From 17d28d0833e8ef39e35ca11353b1997a9337cce7 Mon Sep 17 00:00:00 2001
From: pumnflqv2 <ggdxz77@163.com>
Date: Tue, 5 Jul 2022 04:47:44 +0800
Subject: [PATCH] ADD file via upload

---
 0/linux/game.c | 129 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 129 insertions(+)
 create mode 100644 0/linux/game.c

diff --git a/0/linux/game.c b/0/linux/game.c
new file mode 100644
index 0000000..ed3bd3c
--- /dev/null
+++ b/0/linux/game.c
@@ -0,0 +1,129 @@
+#define __LIBRARY__
+#include<stdio.h>
+#include<unistd.h>
+#include<errno.h>
+#include<time.h>
+#include<stdlib.h>
+#define __NR_init_graphics 87
+#define __NR_get_message 88
+#define __NR_timer_create 89
+#define __NR_paint 90
+
+#define SCREEN_COLOR 3
+
+#define MSG_MOUSE_CLICK 1
+#define MSG_TIME 2
+
+#define BIRD_X 30           //鸟x位置
+#define BIRD_Y 100
+#define BIRD_WIDTH 10       //长方体-鸟
+#define BIRD_HEIGHT 8
+#define BIRD_COLOR 6        
+#define BIRD_UP_SPEED 6     //按跳高
+#define BIRD_FALL_SPEED 4   //降速度
+
+#define OBJECT_WIDTH 15
+#define OBJECT_HEIGHT 40
+#define OBJECT_COLOR 12
+#define OBJECT_POSX_L 50
+#define OBJECT_POSX_R 150 
+#define OBJECT_POSY_L 0 
+#define OBJECT_POSY_R 150 
+#define OBJECT_SPEED 4
+typedef struct MESS{
+	unsigned char mid; 
+	int pid; 
+	struct MESS *next; 
+}message;
+
+typedef struct usertimer{
+	long jiffies;
+	int type; 
+	long init_jiffies;
+	int pid; 
+	struct usertimer *next;
+}user_timer;
+
+typedef struct OB{
+    unsigned char posx;     
+    unsigned char posy;
+    unsigned char width;
+    unsigned char height;
+	unsigned char color;
+}object;
+
+_syscall1(int,init_graphics,int,color)
+_syscall1(int,get_message,unsigned char*,msg)
+_syscall2(int,timer_create,long,milliseconds,int,type)
+_syscall1(int,paint,unsigned char*,ob)
+int Rand(int x,int y){
+    int t;
+    t=time(NULL);
+    return x+t%y;
+}
+void forpaint(object ob){
+    unsigned char *c=(unsigned char *)malloc(sizeof(object));
+    *c=ob.posx;
+    *(c+1)=ob.posy;
+    *(c+2)=ob.width;
+    *(c+3)=ob.height;
+    *(c+4)=ob.color;
+    paint(c);
+    free(c);
+}
+int main(){
+    object objects[20];
+    unsigned char *c;
+    int i;
+    objects[0].posx=BIRD_X;
+    objects[0].posy=BIRD_Y;
+    objects[0].width=BIRD_WIDTH;
+    objects[0].height=BIRD_HEIGHT;
+    objects[0].color=BIRD_COLOR;
+
+    for(i=1;i<20;i++){
+        objects[i].height=OBJECT_HEIGHT;
+        objects[i].width=OBJECT_WIDTH;
+        objects[i].posx=OBJECT_POSX_L+30*i;
+        objects[i].posy=(i%2)?OBJECT_POSY_R:OBJECT_POSY_L;
+        objects[i].color=OBJECT_COLOR;
+    }
+    init_graphics(SCREEN_COLOR);
+    for(i=0;i<20;i++){
+        forpaint(objects[i]);
+    }
+    timer_create(100,0);
+    while(1){
+        unsigned char *msg=(unsigned char *)malloc(sizeof(unsigned char));
+        get_message(msg);
+        if(*msg==MSG_MOUSE_CLICK){
+            objects[0].color=SCREEN_COLOR;
+            forpaint(objects[0]);
+            objects[0].posy-=BIRD_UP_SPEED;
+            objects[0].color=BIRD_COLOR;
+            forpaint(objects[0]);
+        }
+        else if(*msg==MSG_TIME){
+            objects[0].color=SCREEN_COLOR;
+            forpaint(objects[0]);
+            objects[0].posy+=BIRD_FALL_SPEED;
+            objects[0].color=BIRD_COLOR;
+            forpaint(objects[0]);
+            for(i=1;i<20;i++){
+                objects[i].color=SCREEN_COLOR;
+                forpaint(objects[i]);
+                objects[i].posx-=OBJECT_SPEED;
+                objects[i].color=OBJECT_COLOR;
+                forpaint(objects[i]);
+                if((objects[i].posx+objects[i].width)<0){
+                    objects[i].posx=150;
+                    objects[i].posy=Rand(OBJECT_POSY_L,OBJECT_POSY_R);
+                }
+            }
+        }
+        free(msg);
+    }
+    return 0;
+}
+
+