From 6cada13c72dcc4215343e8960dbb374001fd42e7 Mon Sep 17 00:00:00 2001 From: Tituya Date: Thu, 2 Jul 2020 20:09:23 +0200 Subject: [PATCH] =?UTF-8?q?nouvelle=20gravit=C3=A9=20+=20nouveau=20niveau?= =?UTF-8?q?=20+=20temps=20et=20fps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AST3.g3a | Bin 52724 -> 55728 bytes include/define.h | 1 - include/drawlevel.h | 1 + src/drawlevel.c | 6 +++++ src/main.c | 62 ++++++++++++++++++++++++++++++++++++++------ src/setlevel.c | 13 +++++++--- 6 files changed, 71 insertions(+), 12 deletions(-) diff --git a/AST3.g3a b/AST3.g3a index 057d4a6429a6dbb1caba8bd3019f66b1762263a8..30d31aaf6f1cb538e14e4bc6dfa7508e6df74409 100644 GIT binary patch delta 5962 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 G$Nv{V#cSID delta 2951 zcmZWr0Z`ND6@TA9Sx8907z1I*Ab_TbocW;G1B*yzWSm$K$WF&9M`;MuGLIor>eNJt zJ&veZ*Wi98q9@`P6>N>6m3T?{vT(lgD>gSc(=uzC}1A1t`QX91&fYbvmcg-2O zGg1lkr}J}A&lkXL=1{%LqaOF@QU3jApd?L#9QUm9u^yK8^Ls+MOO!W!NE9k`U37wt z9&K@|Yyc}OK$U$!_ca17umk1l;sKz0>&)+&FPN{HKQ!NZ4CZ_PB<8P*lg|HnvUXRD zzxJ)b-)k-EcjePi6PQuEyy;7hfLZsB*8gUcW|mY3Eb3!={~Pu|d7x2mQ6F6JSJ(qz zR#?=HdVfWAt3_?^zkg`XX}{3l(_f@EU%6jC*L>k}&t>FW{0A*+P)!`j!*`*2w#leG zCpZGWk3e;&>`1@cdrFp&SR-rFSGWF9ZGU7`cB)ICpmf<0sBUf2*T^JkI~?gh-;`_U zfPXFZ94$m&Xi4@(br9d5K=p;i5pa8*+=>0sv6a2*8ktdvs_SmA+iO%#lXjQ}m-jKj z02*x>Z>(b#8h1oi8~nnKXt?!v)d`r{ONBq_SdpX?!Nouq2?eQJ|VSq(eaW z_^`||K%H?Oph7PSW6?;1w5MHm(dH8lKl*0r@S{N!sCtSD)kpgA&Kn(pJEl|rb$b&M zd6Hj9J{IW3DEB7HZX2+BUze08cDukh)o?&ja6&*2mG?z zqyzkdWh+)f1yntW(1^xg6p_g7TAa9G3}Is2oV~V>HMP*F~%00|Bj6q<0AtxHq7S$)%g(Ub%VA0v`Mim4rs|ROFO+7 zzOHK-T&P$#!qQr*gmqo4tK~Q+n$~Nv+%6W&z7At483(%Cg~JGk$Zj7SZ_QP#o8l^_ zbvG!ue`MR-se;bOhTT=G%D6Lo75reGPpmt$EI6~qFmu>;Sp!lFmc>ZfDaE5ot%y3r zMWAIlQahIAAzy&lhroShwFtB+!%)hw3S}NdA7UJ_gm*ClwJ8x4fj(?@>3+8QU`ubH zB@1}KO~fc-8nM8Z+Tw*MBa3TqQdm*4$Hy+V=j-@KV8xooj3cl>JL=hd``PIK6So9a zU1#%kJ6a@5Zn6W}VI5+|u?iSEp-3B%a_0!c5{~c*9L+}7+>s%Kjk22^ zxsiq??nu(axY)NH@!^sPXiN$-dh#QUJwP{MS~hBcnhL~5Pq<8o^Dx)BBu)m-IfVF3 zrs>*&L@em)CaLk6_#2Rd*aS4rgN>1gu;OgT>Hex`g3LkQ*4YFc2MaF4z>p6HaA&6n!1C2|nxI%R-aFa6`07^9BDs-_Hx zd40VknwzI!rGs0Z>Ei1D}PbV_mr!#=0<2Dr5|?f~!fw%U!JQYCI<%X*F~;8du`& zt4CzItSO+`N}xM2#_T4bx!YL5^(4j4d1Px@{q^3|Z0tBbfL_rSC(VF!Az{5)=a(lm zSkzyyI5ov4KEC+qz)6sKBRBX(+s4J_8xA65E7|mKZkcjsvE%WaoCS=0KM23Vbmrg} z^Xlukwjz&t$eCp0HIC)mOc1fHtbBk)AqZ7v6zd61Qms6tvYE3Mc2 zaE}oiu#ksa+h3IN4WTw6JPlD~ zq-SJgtm*7)91W48Fhr4_;e2LA>9fr=J%oQ=!4F&uNU}=j2d{>h9@I)<1>YeG-1>9} zKNb~7(}E0tg=ng|f9{b#Quc!G#ScDd(TO`hCxT;(9BAr9F#n-1E~DF|zIaZa<^oEk y`f@qlG8t4;l&?O|@wQp4_bk>qg^k}oE|@+N3m)LF9**r2vWYeREn9~FTmKLFm_-c$ diff --git a/include/define.h b/include/define.h index 45ec3ec..0cf4d48 100644 --- a/include/define.h +++ b/include/define.h @@ -1,3 +1,2 @@ #define PLAYER_SPEED 3 -#define PLAYER_GRAVITY 6 #define PLAYER_HEIGHT 11 diff --git a/include/drawlevel.h b/include/drawlevel.h index b09f7fa..9554be8 100644 --- a/include/drawlevel.h +++ b/include/drawlevel.h @@ -1,2 +1,3 @@ void draw_level(char level[]); void draw_player(int x, int y); +void draw_timer(unsigned int frame); diff --git a/src/drawlevel.c b/src/drawlevel.c index 8abb519..9ece5e7 100644 --- a/src/drawlevel.c +++ b/src/drawlevel.c @@ -1,6 +1,7 @@ #include "drawlevel.h" #include #include +#include "define.h" extern bopti_image_t img_solid_0; //solid block extern bopti_image_t img_solid_1; //another solid block @@ -44,3 +45,8 @@ void draw_level(char level[]) i++; } } + +void draw_timer(unsigned int frame) +{ + dprint_opt(0, 0, C_WHITE, C_BLACK, DTEXT_LEFT, DTEXT_TOP, "%u.%02u",(frame)/45, (frame)%45); +} diff --git a/src/main.c b/src/main.c index 1f8d3eb..9bfdfcc 100644 --- a/src/main.c +++ b/src/main.c @@ -1,14 +1,29 @@ #include #include +#include +#include + #include "setlevel.h" #include "drawlevel.h" #include "collide.h" - #include "define.h" +#define ACCELERATION 0.4 +#define MAX_VSPD 9.0 + +int callback(volatile int *frame_elapsed) +{ + *frame_elapsed = 1; + return TIMER_CONTINUE; +} + int main(void) { - dclear(C_WHITE); + volatile int frame_elapsed = 1; + int timer = timer_setup(TIMER_ANY, 16500, callback, &frame_elapsed); + timer_start(timer); + + unsigned int frame = 0; int player_x = 20, player_y = 20; char level[351]; char gravity = 0; //0 down 1 up @@ -16,15 +31,24 @@ int main(void) int id_level = 1; int start_x; int start_y; + + float vspd = 1.0; + int vert_spd = 1; + set_level(id_level, level, &start_x, &start_y, &gravity); player_x = start_x; player_y = start_y; draw_level(level); while(1) { - draw_level(level); - draw_player(player_x,player_y); + while(!frame_elapsed) sleep(); + frame_elapsed = 0; + frame++; + + draw_level(level); + draw_player(player_x,player_y); + draw_timer(frame); dprint(150,100,C_GREEN,"%d",player_x); dprint(150,120,C_GREEN,"%d",player_y); @@ -65,16 +89,37 @@ int main(void) if(keydown(KEY_EXIT)) break; if(!gravity) { - if(!collide_solid(player_x, player_y+PLAYER_GRAVITY, level, gravity)) player_y+=PLAYER_GRAVITY; - else if(!collide_solid(player_x, player_y+1, level, gravity)) player_y+=1; + if(!collide_solid(player_x, player_y+vert_spd, level, gravity)) + { + if (vspd=212) player_y=-4; if(player_y<-6) player_y=212; } + timer_stop(timer); return 0; } diff --git a/src/setlevel.c b/src/setlevel.c index 93743f3..3fb505c 100644 --- a/src/setlevel.c +++ b/src/setlevel.c @@ -1,12 +1,19 @@ #include "setlevel.h" #include +/*How to add your level ? + +You must to copy + paste your level info into the switch(id_level) The number after "case" correspond to the number of your level +Then you must to set the default gravity into the function set_gravity() like the previous one. 0 down and 1 is up. +*/ + void set_level(int id_level, char level[], int *startx, int *starty, char *gravity) { switch(id_level) { case 1: - memcpy(level,"11111ddd111111111111001111000000000000000000000001000000000000001dddd100000000000000111110000000000010000000000001000000000021222000000000d000000000022000000000000d000000000012000000000000200000000001200000000000020000000000110001111000002000001122211000000101111100000100001100000010100020000010000110s00001000002000001000e111122111111dd111121100111",350); + //memcpy(level,"11111ddd111111111111001111000000000000000000000001000000000000001dddd100000000000000111110000000000010000000000001000000000021222000000000d000000000022000000000000d000000000012000000000000200000000001200000000000020000000000110001111000002000001122211000000101111100000100001100000010100020000010000110s00001000002000001000e111122111111dd111121100111",350); + memcpy(level,"11010011111011111111111111101001dd10001111dddd11110001001dd10001000000000001111001dd100010001111ddd110s00010010001000000000011dddd110010001000dd00000100000000010e01000dd00000011111100011111dddddddd1111ddddd00010000111001111111111111101000000000111111000100000100000000000000011010000010001110000001111101000001000111000ddd1111101001111101111111111111",350); break; case 2: memcpy(level,"1210011111111002110011122200000111ddd000111000000120000000000000011100000e1111111ddd111112211111121100000000000000000000d0000122111111dd111111200d000210002100000000011200d000200002100000000012100d000000000000000000011100d00001111dd11200000011100112222000011211ddd0021100111111000011111ddd00211001111110s0021111ddd0012100211111110021111111001110021111",350); @@ -42,10 +49,10 @@ void set_gravity(int id_level, char *default_gravity) switch(id_level) { case 1: - *default_gravity = 0; //0 down - 1 up + *default_gravity = 1; //0 down - 1 up break; case 2: - *default_gravity = 1; //0 down - 1 up + *default_gravity = 0; //0 down - 1 up break; } }