From 523762c43562dc3cd0923a6c703e0e6313086b67 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Thu, 14 Sep 2017 20:22:54 +0000 Subject: [PATCH] The Bus 0.4: not playable yet git-svn-id: svn://kolibrios.org@6976 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/the_bus/objects.png | Bin 0 -> 10770 bytes programs/cmm/the_bus/road.png | Bin 14993 -> 7586 bytes programs/cmm/the_bus/the_bus.c | 116 +++++++++++++++++++------------ 3 files changed, 72 insertions(+), 44 deletions(-) create mode 100644 programs/cmm/the_bus/objects.png diff --git a/programs/cmm/the_bus/objects.png b/programs/cmm/the_bus/objects.png new file mode 100644 index 0000000000000000000000000000000000000000..e96b60862d2b6aef8850f46dee399b1ad7920105 GIT binary patch literal 10770 zcmZvCc_38Z`~M7P#=a!`SW5OaOUAxVDw46s3=&yF*C2bw5+NiZTiJ%z2~0oIp;aA*Rv#;n;Ek(@-u=!AeQUbj4Y^6GZ2WzogPXp zsb{)<0fD5Zt{drF1y8T%W1jBVg-&W`XA81j3ej%OeM%dp%He7vl16i(F;?#`LxNRJ zWAn75-+Q^jXC3-8k|KehZeF;s$7NLHKN)^4;F1m_LqbP!Y^;@$fpo07G|glCBG>k3 zijStIFrAwHDf4sLK^6X_?Vzb!hc7VltzRDIpCMmMXZ5?C9ffNx=Phe3XLO!sL~gxz zt8a3=Os;&hPyT+?;8f?B-02yyrtnXDZ7KJ)ycV0Z#ysxsvc5YTMWXX)zk2c!yVyqL ze)(DE?hlFYb*BfBEe$&Fp}Q30%-yuz8=lV3!0rUM-PP^+M#qrDw57PSp3wE;4g0f= zsiwE7x}lyY9m0|QM}?D)H@|N%{qZI;Fa!&SZ#RQ&x$XG!eNgMN_}2&3k@BOuJJS|r z^Jn?XN++LgX{+;V6`t)j>{qkt&T36}9*lPSwm&$#vsU|WvT#>a;k0S*U@9hTBdpe8 zBYxft>##;VnW{axnSDxn5Fz3JFaAvLFtLgC??rp=*`U+KAqR!|V3&x4;z(Bv#YvY1 z|2lm4?ply;D3Xa3vd1D5dfZ#z`?WT5M_|6bB@s5_RrdE4>T!k5#A9Sy*i%lXW#wT)>C!sI{qr%Crp$U2R47faWW9sF%(xP)tro~SCmUzeZ(jQ;L>!lQdbI!h zlxjz^JuBT^W$UQY9>U$#P)G2#=pIbh_U**{aLQN_K7Md!Ro2R%VEOy((L3LW$y-OK zuMd%HcaP=PsyEJF?XI?H{{lrG-}+ay`$OP?*hYSnj$3=qT^eiX{+8NV+AhrL?1TY7 ze_ZTTr*qg<%Lizz45aLze%1Yc7~+8QI~j{Sb6eZpFfNVa1A1x7l{GAf9@e&+M1 z6JZnmSqd!piKqoa0QvjLD~;15q%tx)=Fq?MknOEnB)eF;B9fd4;seTQY;81v`NQo< z+p@^NYNvaop=O=k72%<_<&0yEx_IH%QK%azxZ z_gRJ6Fk`yLR4~$FbvvR~xO){J;pf!9%YrW>j)yiVKL^{Q8hEU06rZwoUV}8(jQ*xp zC3-Q>zQOsaLWXfw71P9<8{$gs;{Ld`?}2PBk46Gd`g3Q8)}S6#x%-eo%>1nJ4c|S| zGW*?rX~R4So?`+)!k=B1Uevafiwus^P&MrOu`105Ta*skrvqI38OJ^~bN zOz;7bSnwa{vOr_J1UCT~E4Oo^&Scb@qr^N;naqr!B~c%%G`3uCsXEnAoc@3+9cUgn z$Q0-mvQeUT8A{N1znj7fs7A@mlu94X{$Hz_WHM_8wZ%F#UOs&zRYin5d%t@*KLPAb z5Ty4N9qpse=D)tHn9y?|7JOq&l^3XMSi8R8jj#(rkET4fCg!(q?@YxgQ;wjs?}@6# zB#m1F|BXD!0I)MV2L+5vR$P3X1j~L{lg(Ix>vHy(@?Ts zJ-RYswJb^>ibkq(uc8FzsxAmJ@lti;1w#QE_1{+^J-$TY+FM5j^cS77{%Z(_vbdKYa%cU=G=L#rYJ6FLcR>%vX6RPNKrAS5}ifNc+r(d8tE&8rP6mz?0wbC+aJlR z^eeGhPceAYru5-vERS1m@B)`;eQ#L@ez{EDlaqjo<1FeN@*zPH>X~nRHNTR4O~Wdv z6Rotj%7sGt0IqQXswVxfpaJ~w5*zJx6S0)T7fM(LDI)qJ_yI0A>T;=FRMW!11!m>{ z`_(P4T;>aPUd3G2825j6Uh4+)7x{p&)iDCzp7UbGHR$Xs8pR<-*HCq4rPsHzUYWY< zH^BJ9Mo4SW%&g<~i5Q2s7yJFqnB?tV|9s!y#ELeR=@aJp0_>t~%Zj5~P`<;YySq5s zg+kL4lzPnGBaN&#f>O>k84w=LuG!-X0dgOq`cEO(RTMOjv-<7lDVBFZ(EmB#|XhXrQ80%(Dn^3@tG;1y@BgNEkyT&p!=;gh&A4dyo$(8U)1DatQb z4(3!y&rB%jC*RePy?yVKF7?JEm-B8(;xL#WZXKFsv6%9_T(&biCKAa{Es<7QV;&L3 z`nMvBl&>#d? zGfu?ji6uS@Mzn^L`e|Et*$RsIp{tLg4`YrnXVPK1mtKmtLtq}wz3M6`me?d;T#UIZ z1iy1LwCe}d?s`IEeh{faZ{Y+xTNwACnEX}Ei>+t1kP(}+_I8aRY4%lxfDsu59W%+p zzCv-K!krchYf>U{OIQz>v1lY3>AYDo_m3b+#ziV`Q3{kvr2mr8L@Uc{I(1-?>5 zg@RL-@d5HOqO6>~jU|14l$UW$DqT0KAz71%MK0@_fV7*P%ex}+z5ZwkA_Hf)fa9Nx z1%x67gNM{?sMnbK&OrR#Q#h9&3ZmI7CmyKqkFbOW{u{_VhtulSmUc!OE?3jW7v(^+ zNS-Nz4k+&j795YA0!UNuC8a5ZvL9lBXj|ga5(3mm3;Vm@a+lAUZe13O7UIR&mwfo_ z7bvN=pVkY4sljj2`wn9OgO%BOu^o5I+WucgIL-*`5!E#oeAIG{`r8Su)z|eL?4#tx z4NHkme+>1MP3L9WXiR3riW36_^X}jEy+FdnfE|KT4CNgmhg~#X-5e&ln+^v!-uf`ruvT9$cW?oTjS(zY#Bj)vFKeY zEJVuuRk_}XdGpOP0xpvU^sNxNBT4?sHjF@kU3|Wl5EHH!bxV7zAz0ayX|Zq~Y_$7> zS;4)LOxg?lqNkeuz08U==|Rm~goGpHu^ucseVlOAnh)!pYkywDqy21w(Ng~bvnJ&c z`5{Jz4Q_uj5xA8^;38@|0JEiBWOU=@$H8PRTzvGxeD5*{Cb+5+VFlny!+skQR!$l6 zArerpnQ4}rbL$h68on{lD4L( z9=VI1XmfJNRqe*!OlC$TQ*nn{U8#isu})c^>I|qQ=R(s z;Q$8GU3=C&PT6M0-;FU$JE5uGT+@(zbTW0bgIFt2CJiwQ#xS$sPl)THz6gcal?*@b z`Y5Y*$iR%s>u3w1@X-Af8k`|VH?-jg`3jS)!pj%*x5ZOFU}U#ns7TWdW8VCD%TBD|m#$l< zYl5|XkLij5e;d#6x+JePJ&~Rnz0rCl(gkJo$;8W5e*CA}eGMvus850jl#5VUT_b)H`}z?#xRMZ{e92hZL;`2%jphW zVkIk?1m`i%j0{OXZYRAIHHMY<`Q<~hct5%p{AwZ56^ouDljM5! zLG*Wm4sx&W;rsjoW7fh_9Bz&QL+L}0du-HdvA8btLzzdl}SOshCA}LG5RTK+(1YpPSdZ zZs+8^Djr9dowkQYF8mQv>dZy4AH~lwSA0_CCXHcUKf6Nar%`J|u{DfUsZPCZ!U80L-xkWCk5@Hw#a>%TXnA^|Jo|y&hboi zEaQuDA52q5qYW3HBiwW0wzP;UHg#6k$SX6y64d#ziVO(KQDT%yM@34Fd-c6+_@p|| zlk_MDGv(q-bFlK;E>>J{TNidteE-@%zh=X6CqQPmH6H>auKb#-JxN9DA)R#&b|Z67 zz7L(S>}o^dhMSXO<$Nsoj_8=iOv(2vAL;b21Cr0pEs^Q{RAQPQPoJY(8PylY9k-W5 zvpC6a^t<$_Cp%leU+JKui&#@rydCfYE+doNEu}y7rgXg@S@sT_JG9UxX|bS z`rxs?AghC2f!K%=ldRi#YSZGpbtL3>Wp*pa$(LT7R}ANVH|+0DYX*}pNyhs$g5(`7 zIeWGE`58ZYSFqr;#0h4&7!o%eAjsV5&P>oun2E-|$R5pH2d#X4hB95^UPc-*cdH|4 zs8`(}8KFpzdlS(22%d}6Qv|wx zF)n>$t_BV{83pN_nxu=XMW@uWX}gaqrTK1L!V*{B9xl(Hs(FG0N<=Y0Da5M&vTA$e+QYF;*Mo89KN zitW~Vqm|11;~D5LSzfXZI@=uG6_;8i(n;@vfFn1eueikC>1SDbnb>%184`ebd0BFc zx^cmQQHFEDSIAm7tG;9<7gv0oC4?x(-r3Y}?I}P-T@}S%SPNY+=g<50ArKR34V75! z*i{XsH3K-90@q&-uqfQ0QpoHd2m?i3`liaxOVF8#-SaCGFUIgY(%?&e*CphWa3AEX zZ#8EM!J$(AL{y4~CSZPzQr4D4_e^U!p(u-j0eOF>=_%#_@~m#TvV`bg_!_&W+v4O7 zHd|~97%Eah6xG|+aV4=-pn#X&afgaRsq_V*&Wle`U#%}1@+H%AVR-BN$e<{rky!Sp z54ecz6c3atnUxOu;qEmYl#Vr{CH?}i`bm>cx`bh@8!JD`G=aEOFlA$XXVx^hml9K) zF!3En`|h2GNrj#E?Ta37U1D&V3+o?phL(!Jd!7X@=JmF<(u9DYRnnN_@( z?y%$=YUo>j`ptGZE1Znu2jjz8Jl>IC&d5!&n!);UGN3F8*3ohtgxBV$fkdQ^lf7Gj zZ2U^SnS~V#LY(TXkgT|`+w5h9}Y}#`mjyD$F}s*r`T`!aiHuG{G$lrV0Buf zQ3H~)T>l-{uZ-JHTx0YyA^4TCSGqc`DU&05i@#>$ zGLy4LP=xi+gNS;!Yx@wmm6dDy7vVcm2g?EI$>6-YCkBHt#pkEifvZ8_lk~DkeRVI!kcQ4x^W-b z{AY0X`nBBQ?CG`P#3)fQlOLkio?9UhRHx=U8ivpNIICB|EK7!LRI~HHeA!sXWSaB6 ztMCK))8R*+nkF)6AZU9q8TU~eJ89ic-YUR_)Vpa-D($&yz@2_Qa+DzaA|xEVFnftR z$ChiRjt3$J#6(smHGq}-EO~^)F1!TU!dXeDh2`3L49Yw8wrd!eHPFqSSn9sD6!VNW zK#*({6IGP+hy}=Y%L6tZ0Gf+eF(P@cCkEW`$W248QX7u4Wibr~c{aQBL$C_gX|5ekHY-s8j#FvK;LFn@kt8%tO^A}==k#+f@tva9G z4)UMKsXoAdq>>+61U<#^U(~9v+hO2ewx79qe1ItxaUPmd1aRKTQ#xM6ca(JGv^JYxsFw; z;`~QP=O4bj?olN$NYS^Hu!;M8eh}*f~XfD3MKSKSO+Wo6L^(SC{0Fw!>wuJO(I2vea(J+ zj?VCs&Frt5-Bz%vOxNKzFRrt~R480-I&muPf%bL=ziGjK*E=be58q8~&XsRrFk3{R zQng7u8H8rifc;?1Hf=mSUc^!nw;^1IaVe)wXka&vWP{5-QIEZ=o0=S zaFOxl!5k@CAf)~T1UWP+59eT0UdG%k*Q`};`@H`fJv>p=@0!ZB`4t{Jep$r`4OLhj$&xU3%SQE9;m4%xQ^V1BJRg3)L z+qBueE z`9_#pWi>CpzT~SrH!~=~P1TVm~^zKAJ@g3ep z^Gg{&hPTQ1c;U7oq50vZWyumJ;8|eDiZ)`P3QEVQ&-5-_ z>0yK%{wX6iPmnaeFLge+uCAaCb(}ZA_&Vpq5W`=$iA4QsjEDsf9<#i|51(xdKvpv2m6lg(`sdn6%(M621aA=U zTz_t|C$TR*U(PyHUV&A9{Ew%#iJoE(AU8vqd?%l8DUtUE{m{JV-zxYW`|&a?`g_Z` zS#*`X75M%gQ3S7>vD0z_4PRZBhf&nla*5^?uM5gy8IpYGnd z7sD53WI&OeV{@0POI6}dsbSul2+5fv_}4l{9cjS zLkmu^m3`E^N9#U1xul-8B6o)>d`+gEDG-M!d6Kw1I- zD0A^$k>p5G^!Gs4Mht`O)RkE|h4g1LZetMu=tWl9kfs^{|0ZCCYIg<~x?qE+#AdkX z#b%!RT;{UeuaG4;MtxW(wtWA>_D#N^+XjF2=Z#Gy$Rkh?Aw6zNC(F<@>#scFGRQn&(6r;C^?If~L zG}4nl#UI?rpNGfXf~8<@Jx};)`uto&WlM_!>*OST6Bb=gY^L;liwIkEGYfB|cRfOs z7u_%svTbbIhQ;|lr1#Xq%8g_-o30R&89I|`Sbyj68Cho z{X%=^CPqC&jdw~3R+IUDw(ANoUc~WT^}Zm!wXd2^ZEq}8DwXh<&ilqncn8=$OYI=t zFY>)wR)ug9q1wBFBJ)gc`<^L2kSrgcLKn3E;^Y2sXwmWgC9JN)lGPbSXz|*^I;7-H zv-HA1TmJBEJ$^;Eber+r`SJhts z69J*PNX9+sR`gXPCQH?I9~gk!+L>GvH=hb=z38@_*~`?nxiqwE#cQ1Sh%e1}*IDtI z;V(lkqa)gsU-H^RCb)$BnNO6qYoj-WKOp6AOo#+4AxF=Z5g3$2r~k>aDl2P#G@?vrb-zM@-ZE2cBzou0^}QDE+?@m~+utFau0_|KZwFdOV%#r6LolELT# z)`Q7D`WrID!dkD|SLY-dLrqzgbi=CnndYu-Hd+}=IjYGNRnIcNcHoX1M#`f}8TwD* zyvQ|wm#{fo!G5``&Gs+~WhI|(8JfW($)V=y{9PaMk=dOkZ*M$F-93DXsN6>?>yftDp% zNECA46XUkpII#!cgEm1@uf|!b-@ktlJE(n4=%W!w*_VryD|r2qRmA04(OA@TxeM;4 z5*K~^ZmR=L-6$^9# z>!D0X#qZSrVZd{Ae?7@&a(D0A>~ZH_D^mYrYAOM;yn)S;oKkPB3*cB&!l#u^h#xHW zom}CXst&QfG9r7E!-R#QJ9FAUuAkMYSOf~TIHS+j3p%LR3hukTVe0Zx71RnZA9`HzLw_;BVP2W z;!Bbqzj;psc;>6(JuqhZf$CgW9z5Iw7N&aqbHEZwm7yMxXRn@z(yfe>LRJM4xzPSc zKg?`V2^r-RWJ@AV`pWpxP z&gPx!Q;kwasXc+i#5U!)^DCz-@cj&Pq6*@;I6=hO6ZJvHzO%&y|n9AsQ_%|GIMH=Q|0q2!>>019_e#9hd!l z`TVKK-aQxbINFOdagacv@E{Esg}X!4ySyl<2G;BpY*xU|DbGlwC0tr58V83B4f57h zA=099Ym(lgpD$v9XyN;*F#+1~?#knpTR>9FrjB%Yb~T~fYG`VPOu3gPJD91v0>$U9 z$*A7uOuutKi_Z9dJ=xg(L5O4@Y4QqUq)sCg7$I9=h6JTk2O6UVSfQ0EqP7!79nw^( zq@{Kfy8EKZbLylU8pT_e9M;NJ*At!pF3{NCpg=OJdN83iTlYtO2AT-WgBAM9jB zUOdV_ff}=kC5m1R34AU}kOH>Cta`hRC@TY~WZH=3HX>^O#xKQ{%-5>MMuI#Rr3Z>1 zND9548T>&eSB+l^HYJWd`Rgqd)S1G`RwMxaj{9J}!>>8+cdMLRGgHXsoI;}W+TlKCn$aXIOLW+`E#oo!3c{Q|SyA$W7#evNYj-^$>w;PshHGdh<(zwa-t9JNVny<*(9zFX-dC+@$v9xFUv0%t_wu*YpQyFtWqO>yr38K<*)^+6(p6ly5FdZXko*a`S7)CA9KL zGY?Wl=-Q2Zs+|FgcqLxagoWEr(!a{iL8X~;n9WFp0@(5AVIy)t#e&G$gbB_^E-tCq z1?W4sGp9Bz0NA}eK7}*!Is;kHbb(6tE zcdGm(!K?-85bO$(1P8E-o-8EFMFi;Z-=Ygsp8a#9U-WxzPBEDuZl7PXz=&$=@VKWY z1Rlg%c zM(jk5T-MJaKC?+E%_8+O&RpJrp2mrtgfYcF8ArFE(x@J#$vB_TREtlaXVn<1%vzfB zU-FDB#%a*h{067W)7IoTvp$5vCr9+Br|v{eL}~7_1X%x<1JF3*R;T;PS93aN&Mm*T zD;U2WK1u4)=9?d8GoMso4$rWt_>%2E_i2F-u(sAj{8@XPtcpP3>}9tNf70c&Gbl`% zU1HkX<)|Ja6H)KqL;s9O4t>5t)?iLi;Ju2XdAD+r=_8+O*d>mcVA|JgE1|sY(d^kC z*9{N;9h*Oi=+f%s#zD~zgznTzC2^kfK4}IO4{j-caXHSpE|Rk!v2{D}hx-{v4X+>c z(q!K09ga+kkw{ST;MXv(by3=yKr;QaTS%) zae@>l(4fsZ3*$GLGNx{&A{0kK`e6yS|x;sj`^7Oip2uchvqIaK6$hu26%Y17Wi=(-oRT zE<8G#?~9gEdN!AV-DUCAt_Dw@M_8TW+2s|1F@>$7kP1FO*}qpsSL%qDpA2xSJp4{j zBd5@?@{=;|RILSco;L7g(}2Z~J={X*sR%XSm3Vu+G4GFWzL-cR?nwO#zwCM0UwB`iZIgiX6vT_U=P_ z1!$M+FqpEk7tFZl?Ct=6MFN(Yh8Hl+Ad2M&VP}Mo8Lga>BzY9-k{}<$UEL>G5M|TE z1|Pc$&lT~ovc<8x1Wzk^U#08{^Hd^Q2zQvqZ2FZZw}Y<@`H@}Im5^a|0Uv*#>s@!y zb`rVycFa*_?Uhhq=HR4-hw6+c{|a`rFlPvrg>NjcDD zvfBW)R8s?;EhOWIcca7ktyfHniTe5=Zjos_JtngNWX6B)Mq8Bt%C{+|rn%iHwurUU z_ejp+%<@DJvUL1)%AOlx9Ky;u+)*lRC`-1h1KfRRKgYL)h(fvKWJmbg&`>mnEMj^s zRZCS=!2B)tJZ7$_-cpUftzwm~Ae^S<^HdKts0WWNN-7N0;lnW zbAe2@!c4<2Q(dkwKM6QJsoQQRu4rIxFBkfx=K?t9Mr6nQ2F<4TtNHP1ro7;QUfhgu zUic##9s-kFLCeJ&H5-CW<+(t~gNldOg9k+dF%olF(nV)>wD3LD1a)9dZu~_teP()i zCJ^R5jk@1M2FD#DUT8X+hxrr5|5Z>g23@er_r%yImQS&y7{w>D<7Tf+x9v@Z6ZYF{6;p zE|JH+Ma^%S@s(sRiHG9<#aD4v|AkloFPi%QdpXtpiSs*P;xGA5&GiIbN17Sc7&u4& EKP`@xIsgCw literal 0 HcmV?d00001 diff --git a/programs/cmm/the_bus/road.png b/programs/cmm/the_bus/road.png index b524e46956380b0282bac3247bbe1853ccc0abc1..b5ce1bd3adc2221525c2cfa39fc9a398b56af2a0 100644 GIT binary patch literal 7586 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 diff --git a/programs/cmm/the_bus/the_bus.c b/programs/cmm/the_bus/the_bus.c index 3860926c2e..1ae7ca8d38 100644 --- a/programs/cmm/the_bus/the_bus.c +++ b/programs/cmm/the_bus/the_bus.c @@ -21,18 +21,21 @@ Copyright (C) 2008 O.Bogomaz libimg_image menu; libimg_image road; +libimg_image objects; int lives=0, level=0, score=0; -int don_x, don_y, don_h=40, don_type; -int bus_x, bus_y=147; +int don_x, don_y, don_h, don_w=39, don_type, don_image_y; +int don_h_mas[8] = { 18,36,18,37,12,32,24,37 }; +int bus_x, bus_w=21, bus_y=145, bus_h=44; #define SCR_MENU_MAIN 1 #define SCR_GAME 2 #define SCR_PAUSE 3 +#define RAND -1 -#define WIN_X 258 * SCALE -#define WIN_Y 191 * SCALE +#define WIN_X 258 +#define WIN_Y 191 int screen_type=SCR_MENU_MAIN; @@ -48,43 +51,41 @@ char *ITEMS_LIST[]={ 0}; -//actually it has to be named DrawObstacle(), but I like Donkey more :) -void DrawDonkey(signed int x, y) { - int don_offset_x; +void DrawObstacle(signed int x, y) { int don_offset_y; int image_h; - if (don_type<4) { - don_offset_y=0; - don_offset_x=don_type*40; + if (y >= 0) { + image_h = don_h; + don_offset_y = don_image_y; } else { - don_offset_y = don_h + 1; - don_offset_x=don_type-3*40; - } - - image_h = don_h; - if (y < 0) { - image_h = don_h + y+1; - don_offset_y = don_h + y; + image_h = don_h + y; + don_offset_y = don_image_y - y; y = 0; } - DrawScaledImage(road.image, x, y, 39, image_h, don_offset_x, don_offset_y); + debugval("y", y); + debugval("don_h", don_h); + debugval("image_h", image_h); + debugval("don_offset_y", don_offset_y); + DrawScaledImage(objects.image, x, y, don_w, image_h, 0, don_offset_y); } -void DrawBus(dword x, y) { DrawScaledImage(road.image, x, y, 21, 45, 237, 0); } -void DrawBoom(dword x, y) { DrawScaledImage(road.image, x, y, 39, 34, 208, 47); } -void DrawHighway() { DrawScaledImage(road.image, 0,0, WIN_X, WIN_Y, 0, 82); } +void DrawBus(dword x, y) { DrawScaledImage(objects.image, x, y, bus_w, bus_h, 0, 222); } +void DrawBoom(dword x, y) { DrawScaledImage(objects.image, x, y, 39, 33, 0, 268); } +void DrawHighway() { DrawScaledImage(road.image, 0,0, WIN_X, WIN_Y, 0, 0); } void DrawMenuBackground() { DrawScaledImage(menu.image, 0, 0, WIN_X, WIN_Y, 0, 0); } void main() { randomize(); + GetNewObstacle(RAND); load_dll(libio, #libio_init,1); load_dll(libimg, #libimg_init,1); - Libimg_LoadImage(#menu, "/sys/fonts/home2x.png"); - Libimg_LoadImage(#road, "/sys/fonts/busimg2x.png"); + Libimg_LoadImage(#menu, "/sys/fonts/menu.png"); + Libimg_LoadImage(#road, "/sys/fonts/road.png"); + Libimg_LoadImage(#objects, "/sys/fonts/objects.png"); loop() { @@ -119,24 +120,24 @@ void main() SetScreen(SCR_GAME); } if (active_menu_item==1) notify("'The Bus\nControl keys:\nLeft, Right, Space\nPress P key for pause'tI"); - if (active_menu_item==2) notify("'The Bus\nVersion v0.2 Alpha\n\nAuthor: Leency\nMenu image from Freepik.com'tI"); + if (active_menu_item==2) notify("'The Bus\nVersion v0.4 Alpha\n\nAuthor: Leency\nMenu image from Freepik.com'tI"); if (active_menu_item==3) ExitProcess(); } if (key_scancode == SCAN_CODE_SPACE) && (screen_type==SCR_GAME) { - DrawScaledBar(bus_x*40+100,147, 21,45, COLOR_ROAD); + DrawScaledBar(bus_x*40+100, bus_y, bus_w, bus_h+1, COLOR_ROAD); if (bus_x==1) bus_x=0; else bus_x=1; } if (key_scancode == SCAN_CODE_LEFT) && (screen_type==SCR_GAME) { if (bus_x==0) break; - DrawScaledBar(bus_x*40+100,147, 21,45, COLOR_ROAD); + DrawScaledBar(bus_x*40+100, bus_y, bus_w, bus_h+1, COLOR_ROAD); bus_x=0; } if (key_scancode == SCAN_CODE_RIGHT) && (screen_type==SCR_GAME) { if (bus_x==1) break; - DrawScaledBar(bus_x*40+100,147, 21,45, COLOR_ROAD); + DrawScaledBar(bus_x*40+100, bus_y, bus_w, bus_h+1, COLOR_ROAD); bus_x=1; } if (key_scancode == SCAN_CODE_KEY_P) @@ -148,7 +149,7 @@ void main() break; case evReDraw: - DefineAndDrawWindow(250,150,WIN_X-1+10,WIN_Y-1+skin_height+7,0x74,0,"The Bus",0); + DefineAndDrawWindow(250,150,WIN_X * SCALE-1+10,WIN_Y * SCALE-1+skin_height+5,0x74,0,"The Bus",0); DrawScreen(); break; @@ -164,7 +165,7 @@ void main() } void WriteScore() { - DrawScaledImage(road.image, 10, 83, 60, 12, 10, 83+82); + DrawScaledImage(road.image, 10, 83, 60, 12, 10, 82); WriteScaledText(10, 70, 0x80, 0xFFFFFF, "Score"); WriteScaledText(10, 83, 0x80, 0xFFFFFF, itoa(score)); } @@ -176,6 +177,7 @@ void SetScreen(dword _screen_type) { void DrawScreen() { + int i; if (screen_type==SCR_MENU_MAIN) { DrawMenuBackground(); @@ -196,8 +198,18 @@ void DrawScreen() if (screen_type==SCR_PAUSE) { DrawScaledBar(0,0,70,30,0xFF0000); WriteScaledText(5,7,0x81,0xFFFfff,"PAUSE"); - } + } } + /* + if (screen_type==SCR_PAUSE) + { + for (i = 0; i < 8; i++) //calculate image y offset for current obstacle + { + GetNewObstacle(i); + DrawObstacle(don_w+1*i, 10); + } + } + */ } @@ -226,14 +238,13 @@ void DrawGameOverMessage() $int 64 pause(350); active_menu_item=0; - SetScreen(SCR_MENU_MAIN); - return; + SetScreen(SCR_MENU_MAIN); } void DrawAccident() { DrawBus(bus_x*40+100,bus_y); - DrawBoom(bus_x*40+90,152); + DrawBoom(bus_x*40+90,151); pause(150); lives--; don_y = -don_h; @@ -241,12 +252,31 @@ void DrawAccident() if (lives>0) DrawScaledBar(bus_x*40+90, 147-17, 39, 45+23, COLOR_ROAD); } +void GetNewObstacle(int N) +{ + int i; + don_x = random(2); + if (N==RAND) { + don_type = random(7); + } + else { + don_type = N; + } + don_h = don_h_mas[don_type]; + don_y = -don_h+1; + don_image_y = 0; + for (i = 0; i < don_type; i++) //calculate image y offset for current obstacle + { + don_image_y += don_h_mas[i]+1; + } +} + #define LINE_LENGTH 10 void DrawRoad() { - byte y,line_y; + int y, line_y; - if ((don_x == bus_x)&&(don_y + don_h > bus_y )&&(don_y + don_h < bus_y )) DrawAccident(); + if ((don_x == bus_x)&&(don_y + don_h > bus_y )&&(don_y < bus_y + don_h )) DrawAccident(); if (lives==0) { DrawGameOverMessage(); @@ -268,22 +298,20 @@ void DrawRoad() DrawScaledBar(129, 0, 1, line_y, COLOR_ROAD); DrawScaledBar(129, 0, 1, line_y-LINE_LENGTH, 0xDDE9F2); } - for (y=0; y<190; y+=20) //white dashed line between two roadways + for (y=0; y=210) + if (don_y >= WIN_Y) { - don_x = random(2); - don_y = -don_h; - don_type = random(7); + GetNewObstacle(RAND); score++; WriteScore(); } - DrawScaledBar(don_x*don_h+93, don_y-2, 30, 2, COLOR_ROAD); //Fill donkey old parts - DrawDonkey(don_x*don_h+90,don_y); - DrawBus(bus_x*don_h+100,147); + DrawScaledBar(don_x*don_w+93, don_y-2, 30, 2, COLOR_ROAD); //Fill donkey old parts + DrawObstacle(don_x*don_w+90,don_y); + DrawBus(bus_x*40+100,147); }