From fa4a7c2968689597012455c3beb5bb076d188561 Mon Sep 17 00:00:00 2001 From: Victor Date: Thu, 15 Nov 2018 00:01:03 +0200 Subject: [PATCH] 5 --- src/About.java | 68 +++++++++++++++---------------------- src/Main.java | 54 +++++++++++++++++++++++++++-- src/Menu.java | 14 +++++--- src/RayCanvas.java | 4 +-- src/com/emos/ui/ESkin.java | 49 -------------------------- src/res/0 | Bin 0 -> 2135 bytes src/res/1 | Bin 0 -> 7363 bytes src/res/2 | Bin 0 -> 6884 bytes src/{ => res}/2.png | Bin src/res/3 | Bin 0 -> 6289 bytes src/res/4 | Bin 0 -> 5865 bytes src/{ => res}/about.ru | 2 +- 12 files changed, 91 insertions(+), 100 deletions(-) create mode 100644 src/res/0 create mode 100644 src/res/1 create mode 100644 src/res/2 rename src/{ => res}/2.png (100%) create mode 100644 src/res/3 create mode 100644 src/res/4 rename src/{ => res}/about.ru (96%) diff --git a/src/About.java b/src/About.java index 452384f..a674186 100644 --- a/src/About.java +++ b/src/About.java @@ -8,72 +8,57 @@ * www.mobilab.ru */ import com.emos.ui.ESkin; +import com.emos.ui.EWindow; import com.emos.ui.StringEncoder; import java.io.DataInputStream; import java.util.Vector; import javax.microedition.lcdui.*; -public class About extends Canvas { +public class About extends EWindow { - private final String path = "about.ru"; - private Font def, fnt; - private int fontHeight, defHeight; + private final String path = "/res/about.ru"; + private Font def; + private int defHeight; private String str; //текст - private int w, h; //размеры - private int mh; //Размер ограничивающего прямоугольника; - private int y0; //Положение верхнего края текста + private int mh, y0; //Положение верхнего края текста private int dy; //Шаг при прокрутке текста private int textheight; //Общая высота текста private Vector strLines; - public About() { - setFullScreenMode(true); - w = getWidth(); - h = getHeight(); + public About(String about) { + super(about); str = getText(path); - fnt = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_SMALL); def = Font.getDefaultFont(); - fontHeight = fnt.getHeight()+2; dy = defHeight = def.getHeight()+2; - // - //15; - mh = h - fontHeight - 1; + mh = super.hh - 1; SetTextPar(); } - protected void paint(Graphics g) { - int hc = h/2; - ESkin.drawVGradient (g, ESkin.wBack, ESkin.wBack2, 0,0, w,hc); - ESkin.drawVGradient (g, ESkin.wBack2, ESkin.wBack, 0,hc,w,h-hc); - ESkin.drawHGradient(g, ESkin.wTitle, ESkin.lBack, 0, 0, w, fontHeight); - g.setFont(fnt); - g.setColor(ESkin.wTitle); - g.drawString("RayCanvas", w/2, 1, 17); + public void paint(Graphics g, int w, int h) { g.setFont(def); - g.setClip(0, fontHeight+1, w, mh); + g.setColor(ESkin.wBack); int y1 = y0; for (int i = 0; i < strLines.size(); i++) { if ((y1 + defHeight) > 0) { - g.drawString(strLines.elementAt(i).toString(), 1, fontHeight + 5 + y1, Graphics.LEFT | Graphics.TOP); - } - y1 = y1 + defHeight; - if (y1 > mh) { - break; + g.drawString(strLines.elementAt(i).toString(), 1, 3 + y1, Graphics.LEFT | Graphics.TOP); } + y1 += defHeight; + if (y1 > mh) break; } - g.setClip(0, 0, w, h); } - - protected void keyPressed(int key) { - int ga = getGameAction(key); - if(ga==UP) MoveUp(); - else if(ga==DOWN) MoveDown(); - else if(ga==LEFT) PageUp(); - else if(ga==RIGHT) PageDown(); - else if(ga==FIRE || key==-6 || key==-7) - Main.midlet.dsp.setCurrent(Main.midlet.mn); - repaint(); + + public void keyEvent(int key, byte state) { + if(state!=RELEASED) { + int ga = getGameAction(key); + if(ga==UP) MoveUp(); + else if(ga==DOWN) MoveDown(); + else if(ga==LEFT) PageUp(); + else if(ga==RIGHT) PageDown(); + else if(ga==FIRE || key==-6 || key==-7) + Main.midlet.dsp.setCurrent(Main.midlet.mn); + redraw(); + } } protected void pointerPressed(int x, int y) { @@ -147,6 +132,7 @@ public class About extends Canvas { StringBuffer strBuff = new StringBuffer(); int ch = 0; try { + dis.read(); dis.read(); while ((ch = dis.read()) != -1) { strBuff.append(StringEncoder.decodeCharCP1251((byte)ch)); } diff --git a/src/Main.java b/src/Main.java index 330665b..c2efae7 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,17 +1,24 @@ +import java.io.InputStream; +import java.util.Random; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; +import javax.microedition.media.*; -public class Main extends MIDlet { +public class Main extends MIDlet implements PlayerListener { public Display dsp; public static Main midlet; public Menu mn; - + public static boolean music = false; + private int currentmusic; + private Random rnd; + private Player plr; public Main() { dsp = Display.getDisplay(Main.this); midlet = Main.this; + rnd = new Random(); } public void startApp() { @@ -22,7 +29,48 @@ public class Main extends MIDlet { public void pauseApp() { } - public void destroyApp(boolean unconditional) { + public void destroyApp(boolean un) { notifyDestroyed(); } + + public void changeSoundState(boolean on) { + music = on; + if(on) yesSound(); + else { + if(plr!=null) { + try { + plr.stop(); + plr.close(); + plr = null; + } catch (MediaException ex) { + ex.printStackTrace(); + } + } + } + } + + private void yesSound() { + try { + int yy; + do yy = Math.abs(rnd.nextInt()%5); + while(currentmusic == yy); + currentmusic = yy; + + InputStream is = getClass().getResourceAsStream("/res/"+String.valueOf(yy)); + is.read(); is.read(); + plr = Manager.createPlayer(is, "audio/midi"); + plr.realize(); + plr.prefetch(); + plr.addPlayerListener(this); + plr.start(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + public void playerUpdate (Player player, String event, Object data) { + if (event.equals(PlayerListener.END_OF_MEDIA)) { + if(music) yesSound(); + } + } } diff --git a/src/Menu.java b/src/Menu.java index 3a2774d..061d90b 100644 --- a/src/Menu.java +++ b/src/Menu.java @@ -25,6 +25,7 @@ public class Menu extends EWindow { m1 = new String[] { "Начать", "Об игре", + "Музыка ", "Выход", }; rnd = new Random(); @@ -46,12 +47,16 @@ public class Menu extends EWindow { for (int i = 0;i0) yy-=2; if(yy>1 || yy<-1) redraw(); @@ -69,8 +74,9 @@ public class Menu extends EWindow { private void getM1Code(int nfct) { if(nfct==0) Main.midlet.dsp.setCurrent(ray); - else if(nfct==1) Main.midlet.dsp.setCurrent(new About()); - else if(nfct==2) Main.midlet.destroyApp(true); + else if(nfct==1) Main.midlet.dsp.setCurrent(new About(m1[nfct])); + else if(nfct==2) Main.midlet.changeSoundState(!Main.music); + else if(nfct==3) Main.midlet.destroyApp(true); } protected void pointerPressed(int x, int y) { diff --git a/src/RayCanvas.java b/src/RayCanvas.java index 55280a9..46b2c96 100644 --- a/src/RayCanvas.java +++ b/src/RayCanvas.java @@ -38,12 +38,12 @@ public class RayCanvas extends Canvas {// implements Runnable { dirX = -1; lastTime = 0; dirY = planeX = 0; - planeY = 0.66; + planeY = 0.56; gluk = 1; keyb = new Keyboard(); try { - pr = Image.createImage("/2.png"); + pr = Image.createImage("/res/2.png"); } catch (IOException ex) {} } diff --git a/src/com/emos/ui/ESkin.java b/src/com/emos/ui/ESkin.java index 896393b..a5625ec 100644 --- a/src/com/emos/ui/ESkin.java +++ b/src/com/emos/ui/ESkin.java @@ -115,53 +115,4 @@ public class ESkin { hsb = RGBtoHSV(qr, qg, qb, hsb); return hsb[c]; } - - public static void drawVGradient (Graphics gr, int rgb1, int rgb2, int xn, int yn, int wdh, int hgt) { - int r,g,b; - int r1, r2, g1, g2, b1, b2; - r1=acolor(rgb1, 'r'); r2=acolor(rgb2, 'r'); - g1=acolor(rgb1, 'g'); g2=acolor(rgb2, 'g'); - b1=acolor(rgb1, 'b'); b2=acolor(rgb2, 'b'); - wdh+=xn; - hgt+=yn; - for (int i=yn; i255) r=255; - else if(r<0) r=0; - if(g>255) g=255; - else if(g<0) g=0; - if(b>255) b=255; - else if(b<0) b=0; - gr.setColor (r,g,b); - gr.drawLine (i,yn,i,hgt-1); - } - } - - private static int acolor(int argb, char c) { - int bitmask = 0; - if(c=='b') return (argb & 0xff); - else if(c=='a') bitmask = 24; - else if(c=='r') bitmask = 16; - else if(c=='g') bitmask = 8; - return ((argb >> bitmask) & 0xff); - } } diff --git a/src/res/0 b/src/res/0 new file mode 100644 index 0000000000000000000000000000000000000000..ff4e22d1e938063d8a7f03f0c7fc9bd6c391288f GIT binary patch literal 2135 zcmYLKTT@zD7XI+)!J{a&0Rb-vDhQE_hzKYI5R{7`-o;7c-E=aJ((%$sSI@*cfZEaN z$*#;4p32MA`~#n2%BOjnnVMfQKcU~|(ODR}=Hb*jd!6rF-&%XGz0NOf*~OPT0C;+2 zvj1ck5BGq^Fz&ggpTK>cVl|qLCZk4oAmBCPUS^3E_P;9}(dW&B9b@$5 z_+{ac7F$0U=L=i(yxH14Jp7@FkdDM*;rrd+Rblgm%^l>fL}3;Q-AEH-R_qipU?GT@hncc+5vzqLhUOqBuNp|-xy*K>8cM%=H~Rq=D2 z{BOq6#tju>AJbmA~p&Nbp+Dy1HjI|P&pL@e>l35BEs z&(<(D4}CAL2J_ygu2DWSsIfXC#Q3-pIX#QBE`%}&LnhV8i>1Uf63WrI&%vFk!yuGs7A0i zw%dndK{F(h%vs}~*H`RBw1YFExG(9X9DqQ-hAY5a2nMtcDjg59B_)etSltP^GfOx<)q6$iz1Kr6LI!pwv? zCAnsWK^;D_b#qpw7_dUC9jVv3M3rGyr$dt(;w*q+!W%jAAdSp2P|j&fQQ zQ|68DEzs055Hk{Or&gyfJyOHMNK{j?k*E#%1w2cTv^p%>btsMZ`weD@F#}59n#Y>8 zmH=s)S$2wx#`wuN7Y=jDnBbX0I^HrGYa5$@KX$ev^`q!*pUG=co@m9zQ9I7QV^L@( zp-h4wLr)r=D@l**&t~ z(z8wP>!Pd{IeFLolpHHLnrX2le0R+YG3xVU6IE$K+g)>xzD^S@K{iG05}8&&=_ZgPI z@S!A3HQ{}Dq8Ff(J}UQ7P_g%QRXNc~4&AF*KFP+iWOFQgueW!s2lMYl-(!g6!~1_Y zq%i)ra_?U6Gjfl9^Cpb`k^t2N9D7T+$38Pm(Vq?Q>u6Y8ve7uz8jH;u{@CQ?Os=Z_ zQA>*;k|!Kbt9@#ik30b@0RmFsn7}D3iU<_~RRVQ{dVwnf9|^P)0s_|sf;NOK=o07_ z2orh*A`<bsr-FcN#Iw7o_rO z(1V-&fKy|2qfek$qK7%CQl>)^H<%k2IyFfO>j|_m6es+IPrJ|}(R>M?2wY2E)L`B4 z2@RHsm1wtVur>`=po@vsl=KS?)4-rz5vE{PJmtz#?Q2}raL*{5(MKFlqMH8Hz@o-o zhGDDbm~lHbZuXcEF>yOIZdVpJGgO35!gYqhxZN7JgrDJ^L5o1M#3zJnZhQ=UWLNoc z*@X`Unj{(|E~dIsCsd+baG*h;QQ#7x$%$W)x=Ce^6ITU3mhf6}&4p${%Q5Y|TW6Jg z$^tRMd5dVbqQk9oOse2_d327s(OZSc6(}m)7_ecmQsfvF@y(jbX;lAepcN&m zhmIF4DjptnQN1ulwel{B>V+w)l?|d&L?}_M96eFJFh#ZU_M%eEC{eBKLsV+@&7!g` zWkprg_h33cZt#J|db0{gj1P`V?*L*6yzmBK1u6A%)10od^#@1rD+ z5%LAz7dY<52||HHp}Wwt_=0b+B6?b_!FtlRWl{--;aK?@j8{94w6N>c0 zygY*_lp2#8$2G)!Vz@tEl&fk3_?}(u1nm++yJam+`}rU#k!;%D-E`2$M3_D+J3ITV zFdW3^d+8vbq44obucG`ASWH!>dx^sPvsObmyKPL^T9}WZ63Kh3s4qjE4%T5tMsifr zeB#9{Zwk%V4QXG(dnlYF@1+BYWbGywoM|8Bt*&R7VqoVCQyIN6!wLu|vKgk-p#0e4 zLTNg{=WSUnQMxrz%6WF!g4!{7$@4gENw+ctKJQDgvKm)+OVXX~{Q75%J)cPOLEzT# zzuv5h|Ls`1W_9Umq@OO*ORiUPgfiXzJj^3lcPL%CGFCx6l+u-oY|qf{S+%upy*aCF znQpSMuk0O{=R_u$(4HT#QXjBtrHT*Y?(QN|aoJWxgP9lyp#P{IZg?e2H?>{grf!HIFt4Rl3ot z)y;NGy5o{=x}^Iq>DEiS`x5G0ijB)etqHoKtk(0{=wrwBao*jjjd9LgVVk5vCXt)o zubtyOX1V58e=Dqcuv&9pJTf5_sI8rNtAr1j4xU4BmD{)~L+nq6+qrgG#q*@D`4$|v zL0HsVlk(lBU#Kj)ZRmF@HJN?CI5e+x3&`*bK_n4=d9dPt>mbBzpV+QUgv867_p)sT z|GM&1AY1v*8S1Zc^H;vQE#LY6toDM<^hfVl!b{(H{+)B^N&c+0YHiKvS%~qsxtZzt z3;vm@DgIbEZw$mH`CDMD!nk^#{%V@~_Uf4TDt$Bd-&|84W=$2DrshZEmzr9}XW~=Q ViOG8PIq@&%(|=kA@*n;5{{a%$>sSB) literal 0 HcmV?d00001 diff --git a/src/res/2 b/src/res/2 new file mode 100644 index 0000000000000000000000000000000000000000..61979510aee5d6b02dd72041ba4ce452afa766ae GIT binary patch literal 6884 zcmeHLO;6iE5S=t_0@D5fAI%8`Oag^NkdRQw2T6!Q6%nd>BEp13ln(_sRPx0ih z82O*yC*sx=`R``(XXo8c`>1tk|F)M_SF^U;wcV?W_JN&0J2`KhcFB*c-S+9x*F$^v zve9hb^lU#vj}fPHc$%zt8VASr5`EwP((|@SZNhAls=`!BiC_)SYNSdqB~lfb3Mmm3 z-9=Dzp9B_>wiwQ?gIk!gMT)^PMrBem=snCVz!XT8VTLm$umTXP&BNqD0nCsB2^5zp zf|Hi1lPtQ6VDy+gQ>RV@W$HwdK?seZUaFr1XWU3_j2o$s*R3C-kceP(brIb~FnUZ; zoJ7zlR+Mg6q)r51kx#v8GM&_@MKqn1e3|=04H4Z%kT-&Up_v5!+Z&1Lq|{%%F&kYP zDUrG1jeegz*2K3$&`HH^$DPzN{mgiSsSH_Zm^4}XXaV2?S&J}>WH~SnS@SUS;h7Qq z=HNFMxN{WU=owOQNRc%QGaJs%&-l&s?E2`9tYMH1K2V}G{y;1J{aXhYDu>jX*DtRP Xc`zfxgsB3vAB+|lRebhDz-e+1@hAJC literal 0 HcmV?d00001 diff --git a/src/2.png b/src/res/2.png similarity index 100% rename from src/2.png rename to src/res/2.png diff --git a/src/res/3 b/src/res/3 new file mode 100644 index 0000000000000000000000000000000000000000..c82650425da4eab446d566c7992b6a5294e791de GIT binary patch literal 6289 zcmeHL%Whjm82%ea6{?^sSaZ}$RjkUcB`~RD%NpZLjD#1cRRudcvE{^=q_SIyu88d_ zQh|lzNIU@#P~Zi)JP;4S!hGM%nVFO06ceCeAPZ~$`+fd7@`Fzs_xIW&a#gO#n^%q+ z_Xi&X`$gs-uCK2(Uy=D|36YY_KS;dx`a55eyaw_yfdqhOD@0+u&;MLtGQT6H1nXbR zJaP5G;clxxl;X|*?!qiRo0w|nYnyBAFBIO{mK$pFzyIME7O70nt` z`RRqsl&M{Yc8Nd2_OQ7(k=m*cmXiJI$4Msf!b)6n{g5a zY8RlLCy)n_qnX?VlltG)Cel39DRd2;3#KTjLP4A8r6HholxQyY($(Ho4`YGRIMepC zx)>fxG|_B@F$kvNG>r%u-5Nz|iy|C2GfY+zZfV3v76t@kk>ELZpjhQ_63B zQzupj&R}us1j(;x87NW+2m}>`1X)BZ0?`&Nqi9``QG|vuBghe^j2S_)$`!#Tw=9`B ze@SwJByEDsAwV}5lPrU#LuQgdbjY;q@?Z`|D$K!1nH*S(B7QnKld)lJ!uKY8+Mq9r z(`c3z12D>V$B{nT9x_VTSliTdo5sW)gDo~~Pz&=IpU-8ujxdV?+4Ssy=Hc-!qDG@- zbQgIT3{caRB;NP5 zKaShA{USaG;}0jt4*m9L}7^QHLyoa}t~2Y=YxL&#+V(iu?t}3N%L3vo!pqBN1(}LR+ZN7Db5tUVmS? z=DeI*93W-dBOn^*MNa!~> zS;%MbOHv2O1jr;w9a_4B-v&9f1Z1*dIogM_Pua5+jcMOhfu4d30BGguEdsXyI93Y7 ziAcwx6|Hxhes9yChccAoT)+mnG-Tq_ap_1kl%yO}S|WFzUl-I$$E*9L`{W@O2Gv1L zJmk3^@>~z4shg&*hrEV|*y)Y-#7x9S`&qPOt6jNcPME(d295|sO` z$L&t4vA?_5=?C|A_YMzsI)iR_wcKB{auZr_)CPy21UKIA41>o0urp}w^gF{F3!>L9 LDUouoa5a7fn!@3) literal 0 HcmV?d00001 diff --git a/src/res/4 b/src/res/4 new file mode 100644 index 0000000000000000000000000000000000000000..497eaa77cad978f881bf0e8c2a6678144cd0293a GIT binary patch literal 5865 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 literal 0 HcmV?d00001 diff --git a/src/about.ru b/src/res/about.ru similarity index 96% rename from src/about.ru rename to src/res/about.ru index b94bdcb..b6fe9bd 100644 --- a/src/about.ru +++ b/src/res/about.ru @@ -1,4 +1,4 @@ -RayCanvas +«њRayCanvas Цель игры - пройти лабиринт. Цвета стен, лабиринт и эффекты генерируются случайно.