commit f3f1245a955e13b6f6b2d95820a18602ed0c95b4 Author: Victor Date: Thu Nov 15 12:34:18 2018 +0200 Initial diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..128fd0f --- /dev/null +++ b/build.xml @@ -0,0 +1,83 @@ + + + + + + Builds, tests, and runs the project . + + + diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml new file mode 100644 index 0000000..7173607 --- /dev/null +++ b/nbproject/build-impl.xml @@ -0,0 +1,1368 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Classpath to J2ME Ant extension library (libs.j2me_ant_ext.classpath property) is not set. For example: location of mobility/modules/org-netbeans-mobility-antext.jar file in the IDE installation directory. + Platform home (platform.home property) is not set. Value of this property should be ${platform.active.description} emulator home directory location. + Platform boot classpath (platform.bootclasspath property) is not set. Value of this property should be ${platform.active.description} emulator boot classpath containing all J2ME classes provided by emulator. + Must set src.dir + Must set build.dir + Must set dist.dir + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set preprocessed.dir + + + + + + + + + + + + + + + + + + Must set build.classes.dir + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + Must set obfuscated.classes.dir + + + + Must set obfuscated.classes.dir + Must set obfuscator.srcjar + Must set obfuscator.destjar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set preverify.classes.dir + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MicroEdition-Configuration: ${platform.configuration} + + MicroEdition-Configuration: ${platform.configuration} + + + + MicroEdition-Profile: ${platform.profile} + + MicroEdition-Profile: ${platform.profile} + + + + Must set dist.jad + + + + + + + + + + + + + + + + + + + + + + + + ${manifest.midlets}${evaluated.manifest.apipermissions}${evaluated.manifest.pushregistry}${manifest.others}${manifest.jad} + ${manifest.midlets}${evaluated.manifest.apipermissions}${evaluated.manifest.pushregistry}${manifest.others}${manifest.manifest} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Starting emulator with port number ${active.debug.port} + + + + + + + + + + + + Starting emulator with port number ${active.debug.port} + + + + + + + + + + + + + + + + + Must set dist.javadoc.dir + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${all.configurations} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Property deployment.${deployment.method}.scriptfile not set. The property should point to an Ant script providing ${deployment.method} deployment. + + + + + + + + Classpath to Ant Contrib library (libs.ant-contrib.classpath property) is not set. + + + + + + + + + Active project configuration: @{cfg} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Property build.root.dir is not set. By default its value should be \"build\". + Property dist.root.dir is not set. By default its value should be \"dist\". + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100644 index 0000000..92e7510 --- /dev/null +++ b/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +build.xml.data.CRC32=18e7e3b5 +build.xml.script.CRC32=a7ca5983 +build.xml.stylesheet.CRC32=03eab09b +nbproject/build-impl.xml.data.CRC32=18e7e3b5 +nbproject/build-impl.xml.script.CRC32=a910d65a +nbproject/build-impl.xml.stylesheet.CRC32=d670562e diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties new file mode 100644 index 0000000..c25b863 --- /dev/null +++ b/nbproject/private/private.properties @@ -0,0 +1,7 @@ +#Thu Sep 17 22:43:08 EEST 2009 +netbeans.user=D\:\\Users\\aNNiMON\\.netbeans\\6.7 +javadoc.preview=true +config.active= +deployment.counter=12 +app-version.autoincrement=true +deployment.number=0.0.11 diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml new file mode 100644 index 0000000..c1f155a --- /dev/null +++ b/nbproject/private/private.xml @@ -0,0 +1,4 @@ + + + + diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..4a92953 --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,140 @@ +abilities=MMAPI=1.1,SATSAJCRMI=1.0,SATSACRYPTO=1.0,lib/jsr256.jar=1.0,JSR82=1.1,JSR226=1.0,MIDP=2.0,JSR229=1.1.0,SATSAAPDU=1.0,CLDC=1.1,JSR177=1.0,JSR179=1.0.1,J2MEWS=1.0,WMA=2.0,JSR172=1.0,ColorScreen,OBEX=1.0,JSR238=1.0,JSR211=1.0,JSR234=1.0,lib/midpapi21.jar=1.0,JSR75=1.0,JSR184=1.1,SATSAPKI=1.0,ScreenHeight=225,ScreenColorDepth=8,JSR180=1.1.0,J2MEXMLRPC=1.0, +all.configurations=\ +application.args= +application.description= +application.description.detail= +application.name= +application.vendor=Vendor +build.classes.dir=${build.dir}/compiled +build.classes.excludes=**/*.java,**/*.form,**/*.class,**/.nbintdb,**/*.mvd,**/*.wsclient,**/*.vmd +build.dir=build/${config.active} +build.root.dir=build +debug.level=debug +deployment.copy.target=deploy +deployment.instance=default +deployment.jarurl=${dist.jar} +deployment.method=NONE +deployment.override.jarurl=false +dist.dir=dist/${config.active} +dist.jad=JavaMANia.jad +dist.jar=JavaMANia.jar +dist.javadoc.dir=${dist.dir}/doc +dist.root.dir=dist +extra.classpath= +filter.exclude.tests=false +filter.excludes= +filter.more.excludes=**/overview.html,**/package.html +filter.use.standard=true +jar.compress=true +javac.debug=true +javac.deprecation=false +javac.encoding=UTF-8 +javac.optimize=false +javac.source=1.3 +javac.target=1.3 +javadoc.author=false +javadoc.encoding= +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +libs.classpath= +main.class= +main.class.class=applet +manifest.apipermissions= +manifest.file=manifest.mf +manifest.jad= +manifest.manifest= +manifest.midlets=MIDlet-1: JavaM@Nia,/res/icon.png,JM\n +manifest.others=MIDlet-Vendor: aNNiMON\nMIDlet-Name: JavaM@Nia\nMIDlet-Version: 1.1\n +manifest.pushregistry= +name=aNMPWR +no.dependencies=false +nokiaS80.application.icon= +nsicom.application.monitorhost= +nsicom.application.runremote= +nsicom.application.runverbose= +nsicom.remoteapp.location=\\My Documents\\NetBeans Applications +nsicom.remotevm.location=\\Windows\\creme\\bin\\CrEme.exe +obfuscated.classes.dir=${build.dir}/obfuscated +obfuscation.custom=-keep public class * extends javax.microedition.midlet.MIDlet\n-keepnames class **Exception\n\n-optimizationpasses 9\n-overloadaggressively\n-dontusemixedcaseclassnames\n-repackageclasses ''\n-allowaccessmodification\n-microedition +obfuscation.level=9 +obfuscator.destjar=${build.dir}/obfuscated.jar +obfuscator.srcjar=${build.dir}/before-obfuscation.jar +platform.active=Sony_Ericsson_SDK_2_5_0_4_for_the_Java_TM__ME_Platform_Emulator_ +platform.active.description=Sony Ericsson SDK 2.5.0.4 for the Java(TM) ME Platform(Emulator) +platform.apis=JSR234-1.0,JSR211-1.0,JSR75-1.0,J2ME-WS-1.0,JSR82-1.1,JSR184-1.1,JSR238-1.0,MMAPI-1.1,JSR226-1.0,WMA-2.0 +platform.bootclasspath=${platform.home}/lib/jsr226.jar:${platform.home}/lib/jsr238.jar:${platform.home}/lib/jsr211.jar:${platform.home}/lib/jsr082.jar:${platform.home}/lib/jsr184.jar:${platform.home}/lib/jsr75.jar:${platform.home}/lib/mmapi.jar:${platform.home}/lib/j2me-ws.jar:${platform.home}/lib/wma20.jar:${platform.home}/lib/jsr234.jar:${platform.home}/lib/cldcapi10.jar:${platform.home}/lib/midpapi20.jar +platform.configuration=CLDC-1.0 +platform.device=SonyEricsson_JP8_240x320_Emu +platform.fat.jar=true +platform.profile=MIDP-2.0 +platform.trigger=CLDC +platform.type=UEI-1.0.1 +preprocessed.dir=${build.dir}/preprocessed +preverify.classes.dir=${build.dir}/preverified +preverify.sources.dir=${build.dir}/preverifysrc +resources.dir=resources +ricoh.application.email= +ricoh.application.fax= +ricoh.application.icon= +ricoh.application.target-jar= +ricoh.application.telephone= +ricoh.application.uid=91211980 +ricoh.application.version= +ricoh.dalp.application-desc.auto-run=false +ricoh.dalp.application-desc.energy-save= +ricoh.dalp.application-desc.exec-auth= +ricoh.dalp.application-desc.visible=true +ricoh.dalp.argument= +ricoh.dalp.codebase= +ricoh.dalp.display-mode.color=true +ricoh.dalp.display-mode.is-4line-support=false +ricoh.dalp.display-mode.is-hvga-support=true +ricoh.dalp.display-mode.is-vga-support=false +ricoh.dalp.display-mode.is-wvga-support=false +ricoh.dalp.information.abbreviation= +ricoh.dalp.information.icon.basepath= +ricoh.dalp.information.icon.location= +ricoh.dalp.information.is-icon-used=true +ricoh.dalp.install.destination=hdd +ricoh.dalp.install.mode.auto=true +ricoh.dalp.install.work-dir=hdd +ricoh.dalp.is-managed=true +ricoh.dalp.resources.dsdk.version=2.0 +ricoh.dalp.resources.jar.basepath= +ricoh.dalp.resources.jar.version= +ricoh.dalp.version= +ricoh.icon.invert=false +ricoh.platform.target.version= +run.cmd.options= +run.jvmargs= +run.method=STANDARD +run.security.domain=trusted +run.use.security.domain=false +savaje.application.icon= +savaje.application.icon.focused= +savaje.application.icon.small= +savaje.application.uid=TBD +savaje.bundle.base= +savaje.bundle.debug=false +savaje.bundle.debug.port= +semc.application.caps= +semc.application.icon= +semc.application.icon.count= +semc.application.icon.splash= +semc.application.icon.splash.installonly=false +semc.application.uid=E3524877 +semc.certificate.path= +semc.private.key.password= +semc.private.key.path= +sign.alias= +sign.enabled=false +sign.keystore= +src.dir=src +use.emptyapis=true +use.preprocessor=true diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..ee27bd8 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,10 @@ + + + org.netbeans.modules.kjava.j2meproject + + + JavaMania + 1.6 + + + diff --git a/src/Effects.java b/src/Effects.java new file mode 100644 index 0000000..b08c7d7 --- /dev/null +++ b/src/Effects.java @@ -0,0 +1,55 @@ +import javax.microedition.lcdui.*; + +/** + * + * @author aNNiMON + */ +public class Effects { + + public static Image effect(Image img) { + int[] pixel = new int[img.getWidth() * img.getHeight()]; + img.getRGB(pixel, 0, img.getWidth(), 0, 0, img.getWidth(), img.getHeight()); + for (int io = 0; io < pixel.length; io++) { + int qa = (pixel[io] >> 24) & 0xff; + int qr = (pixel[io] >> 16) & 0xff; + int qg = (pixel[io] >> 8) & 0xff; + int qb = pixel[io] & 0xff; + qr += UI.osv;if(qr>255) qr=255;if(qr<0) qr=0; + qg += UI.osv;if(qg>255) qg=255;if(qg<0) qg=0; + qb += UI.osv;if(qb>255) qb=255;if(qb<0) qb=0; + pixel[io] = (qa << 24) | (qr << 16) | (qg << 8) | qb; + + } + return Image.createRGBImage(pixel, img.getWidth(), img.getHeight(), true); + } + + public static Image Resize(Image temp, int newX, int newY) + { + newX=Math.abs(newX)+1; newY=Math.abs(newY)+1; + int rgb[] = new int[temp.getWidth() * temp.getHeight()]; + temp.getRGB(rgb, 0, temp.getWidth(), 0, 0, temp.getWidth(), temp.getHeight()); + int rgb2[] = rescaleArray(rgb, temp.getWidth(), temp.getHeight(), newX, newY); + Image temp2 = Image.createRGBImage(rgb2, newX, newY, true); + return temp2; + } + + private static int[] rescaleArray(int ini[], int x, int y, int x2, int y2) { + int out[] = new int[x2 * y2]; + for(int yy = 0; yy < y2; yy++) { + int dy = (yy * y) / y2; + for(int xx = 0; xx < x2; xx++) { + int dx = (xx * x) / x2; + out[x2 * yy + xx] = ini[x * dy + dx]; + } + } + return out; + } + + public static int acolor(int argb, char c) { + if(c=='a') return ((argb >> 24) & 0xff); + else if(c=='r') return ((argb >> 16) & 0xff); + else if(c=='g') return ((argb >> 8) & 0xff); + else if(c=='b') return (argb & 0xff); + else return argb; + } +} diff --git a/src/FWCashe.java b/src/FWCashe.java new file mode 100644 index 0000000..6830897 --- /dev/null +++ b/src/FWCashe.java @@ -0,0 +1,45 @@ + + +import javax.microedition.lcdui.Font; +import java.util.Vector; + +public class FWCashe +{ + protected static Vector fwc = new Vector (); + protected static Vector fwc_f = new Vector (); + + public static FWCashe getCache (Font font) + { + for (int i = 0; i < fwc.size (); i++) + if (fwc_f.elementAt(i).equals (font)) + return (FWCashe)fwc.elementAt(i); + fwc_f.addElement (font); + FWCashe f; + fwc.addElement (f = new FWCashe (font)); + return f; + } + protected Font font; + protected byte caches [][]; + + protected FWCashe (Font font) + { + this.font = font; + caches = new byte [256][]; + for (int i = 0; i < 256; i++) + caches [i] = null; + } + + public int charWidth (char ch) + { + int hi = (ch >> 8)&0xFF, lo = (ch)&0xFF; + if (caches [hi] == null) + { + caches [hi] = new byte [256]; + for (int i = 0; i < 256; i++) + caches [hi][i] = -1; + } + if (caches [hi][lo] == -1) + caches [hi][lo] = (byte)font.charWidth (ch); + return caches [hi][lo]; + } +} diff --git a/src/JM.java b/src/JM.java new file mode 100644 index 0000000..d43def9 --- /dev/null +++ b/src/JM.java @@ -0,0 +1,33 @@ +import javax.microedition.midlet.*; +import javax.microedition.lcdui.*; + +/** + * @author aNNiMON + */ +public class JM extends MIDlet { + + public Display dsp; + public static JM midlet; + public static String name; + public Loading cnv; + + public JM () { + midlet = this; + } + + public void startApp() { + cnv = new Loading(); + cnv.setFullScreenMode(true); + name="JavaM@Nia"; + Util.getUI("/xml/skin.ini"); + dsp = Display.getDisplay(this); + dsp.setCurrent(cnv); + } + + public void pauseApp() { + } + + public void destroyApp(boolean un) { + notifyDestroyed(); + } +} diff --git a/src/Key.java b/src/Key.java new file mode 100644 index 0000000..f7140cc --- /dev/null +++ b/src/Key.java @@ -0,0 +1,75 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +/** + * + * @author sinaz + */ +public class Key { + + public static String Platform = "";//можно убрать если не нужно + public static int leftSoftKey = -6;//ALL Devices + public static int rightSoftKey = -7;//ALL Devices + public static int Call = - 1000;// Samsung Z500 & Siemens Devices + public static int Hangup = - 1000;//Siemens Devices (S-Gold) + public static int Back = -1000;//SonyEricsson + + //Only SonyEricsson JP6 + public static int VolPlus = -1000; + public static int VolMinus = -1000; + public static int Camera = -1000; + public static int Focus = -1000; + public static int Snapshot = -1000; + //************************* + + + static { + String microeditionPlatform = System.getProperty("microedition.platform"); + if (microeditionPlatform != null) { + String melc = microeditionPlatform.toLowerCase(); + if (melc.indexOf("ericsson") != -1)//SonyEricsson + { + Back = -11; + //Only SonyEricsson JP6 + VolPlus = -36; + VolMinus = -37; + Camera = -24; + Focus = -25; + Snapshot = -26; + Platform = "Sony Ericsson"; + } else if (melc.indexOf("nokia") != -1)//Nokia Devices (S40) (S60) + { + //Only Nokia Devices (S60) + Platform = "Nokia"; + } else {//остальные не выдают фирму,а только марку мобилы например Z500,потому их лучше ловить по классам + try { + Class.forName("com.samsung.util.Vibration");//Samsung + Call = -5;// Samsung Z500 + Platform = "Samsung"; + } catch (Throwable t0) { + try { + Class.forName("com.siemens.mp.io.file.FileConnection");//Siemens Devices (S-Gold) + leftSoftKey = -1; + rightSoftKey = -4; + Call = -11; + Hangup = -12; + Camera = -20; + Platform = "Siemens"; + } catch (Throwable t1) { + try { + Class.forName("com.motorola.io.file.FileConnection"); + leftSoftKey = -21; + rightSoftKey = -22; + Call = -10; + //Motorola V300, V500, V525 должны быть софты leftSoftKey = 21;rightSoftKey = 22; + Platform = "Motorola"; + } catch (Throwable t2) { //сюда можно вписать ешё платформу мотороллы с классом com.motorola.io.FileConnection + //но у неё файловая мудацкая + } + } + } + } + } + } +} diff --git a/src/Loading.java b/src/Loading.java new file mode 100644 index 0000000..2fdc016 --- /dev/null +++ b/src/Loading.java @@ -0,0 +1,65 @@ +import javax.microedition.lcdui.*; + +/** + * @author aNNiMON + */ +public class Loading extends Canvas implements Runnable { + + private int w,h, sleep; + private byte mode; + private Thread thr; + private Image logo1, logo2; + private long lt; + private volatile boolean slp; + + public Loading() { + setFullScreenMode(true); + slp = true; + w = getWidth(); + h = getHeight(); + mode=-1; sleep=3000; + try { + logo1 = Image.createImage("/res/logo1.png"); + if(w==240 && h==320) { + logo2 = Image.createImage("/res/logo2.png"); + }else{ + logo2 = Effects.Resize(Image.createImage("/res/logo2.png"), w, w*320/240); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + thr = new Thread(this); + thr.start(); + } + + public final void paint(Graphics g) { + g.setColor(0xffffff); + g.fillRect(0,0,w,h); + switch(mode) { + case 0: g.drawImage(logo1, w/2, h/2, 3); break; + case 1: g.drawImage(logo2, w/2, h/2, 3); break; + case 2: System.gc(); slp = false; Menu mn = new Menu(Effects.effect(logo2)); JM.midlet.dsp.setCurrent(mn); break; + } + lt = System.currentTimeMillis(); + } + + public final void keyPressed(int key) { + if(getGameAction(key)==FIRE) { + lt = System.currentTimeMillis(); + mode++; + repaint(); + } + } + + public void run() { + while(true) { + if(!slp) break; + if(System.currentTimeMillis()-lt>sleep) { + mode++; + lt = System.currentTimeMillis(); + repaint(); + } + } + } + +} \ No newline at end of file diff --git a/src/Menu.java b/src/Menu.java new file mode 100644 index 0000000..26bf491 --- /dev/null +++ b/src/Menu.java @@ -0,0 +1,137 @@ +import javax.microedition.lcdui.*; + +/** + * @author aNNiMON + */ +public class Menu extends Canvas { + + private int w,h; + private String[] menu; + private Image back; + private int FileY; + private int fh, ah; + private int cu=0; + private long ty; + + + public Menu(Image img) { + setFullScreenMode(true); + w = getWidth(); + h = getHeight(); + back=img; + menu = new String[] { + JM.name, + "Новости", + "Помощь", + "О нас", + "Выход" + }; + fh = UI.stFont.getHeight(); + ah = fh*menu.length; + } + + public void paint(Graphics g) { + g.drawImage(back, w/2, h/2, 3); + drawMenu(g, menu); + UI.drawMenuInterface(g,JM.name,"Выбор","Выход"); + + } + + private void getCursor(int cu) { + if(cu==0) JM.midlet.dsp.setCurrent(new aNMPWR(back)); + if(cu==1) { + TextView tv = new TextView(back); + tv.openFile("http://java-mania.ru/magazin/news.txt", this, menu[cu]); + } + if(cu==2) { + TextView tv = new TextView(back); + tv.openFile("/txt/help.txt", this, menu[cu]); + } + if(cu==3) { + TextView tv = new TextView(back); + tv.openFile("/txt/about.txt", this, menu[cu]); + } + if(cu==4) JM.midlet.destroyApp(true); + } + + public void keyPressed(int key) { + int ga; + try { + ga = getGameAction(key); + } catch (Exception e) { + ga = 0; + } + if(ga==UP || ga==LEFT) {cu--;if(cu<0) cu=menu.length-1;} + if(ga==DOWN || ga==RIGHT) {cu++;if(cu>menu.length-1) cu=0;} + if(key==Key.rightSoftKey) JM.midlet.destroyApp(true); + if(key==Key.leftSoftKey || ga==FIRE) { + getCursor(cu); + } + repaint(); + } + + protected void pointerPressed(int pix, int piy) { + int q = UI.getSoftBarHeight(); + if(pix<2*q && piy>h-q) { + getCursor(cu); + }else if(pix>w-2*q && piy>h-q) { + JM.midlet.destroyApp(true); + }else{ + int cu1=cu; + piy-=(h/2-ah/2); + if(piy>0 && piy вызвать closer.close(); + */ + public void closeStream() { + if (bdis != null) { + try { + bdis.close(); + } catch (IOException iox) { + iox.printStackTrace(); + } + + bdis = null; + } + if (parent != null) { // System.out.println("parent"); + JM.midlet.dsp.setCurrent(parent); + parent = null; + } else { + JM.midlet.dsp.setCurrent(new aNMPWR(back)); + } + } + + /** + * Прочитать строку из потока + */ + public String readString(boolean wordWrap) { + String s = ""; + int maxStrWidth = w - 7; + char c = '0', cmin1 = (char) -1; + int afterspace = -1, cut = 0; + int strwidth = 0; + try { + if (bdis == null || bdis.available() <= 0) { + return null; + } + do { + c = isd.readChar(); //System.out.println("c= "+c); + + if (c != cmin1 && c != '\r') { + s += c; + strwidth += fch.charWidth(c); + } + if ((c == cmin1) || (c == '\n')) // новая строка или конец файла + { + wordWrap = false; + break; + } + if (c == ' ') { + afterspace = 0; + } else if (afterspace >= 0) { + afterspace++; + } + } while (strwidth < maxStrWidth); + if (wordWrap && afterspace >= 0) { + cut += afterspace; + } else if (strwidth > maxStrWidth && c != ' ') { + cut = 1; + } + if (cut > 0) { + s = s.substring(0, s.length() - cut); + if (enc.compareTo("UTF-8") != 0) { + bdis.seek(bdis.tell() - cut); + } else { + for (int i = 0; i < cut; i++) { + isd.readCharBack(); + } + } + } + } catch (IOException iox) { + return null; + } + return s; + } + + /** + * Прочитать строку из потока НАЗАД + */ + public String readStringBack(boolean wordWrap) { + String s = ""; + int maxStrWidth = w - 7; + char c = '0', cmin1 = (char) -1; + int afterspace = -1; + int cut = 0; + int strwidth = 0; + try { + if (bdis == null || bdis.tell() <= 0) { + return null; + } + do { + c = isd.readCharBack(); + if (c != cmin1 && c != '\r') { + s = c + s; + strwidth += fch.charWidth(c); + } + if ((c == cmin1) || (c == '\n' && s.length() > 1)) // новая строка или начало файла + { + wordWrap = false; + break; + } + if (c == ' ') { + afterspace = 1; + } else if (c == '\n') { + afterspace = 0; + } else if (afterspace >= 0) { + afterspace++; + } + } while (strwidth < maxStrWidth); + if (wordWrap && afterspace >= 0 && s.length() > afterspace) { + cut += afterspace; + } else if ((strwidth > maxStrWidth && c != ' ') || (c == '\n' && s.length() > 1)) { + cut = 1; + } + if (cut > 0) { + s = s.substring(cut, s.length()); + if (enc.compareTo("UTF-8") != 0) { + bdis.seek(bdis.tell() + cut); + } else { + for (int i = 0; i < cut; i++) { + isd.readChar(); + } + } + } + } catch (IOException iox) { + return null; + } + return s; + } + + /** + * Прочитать экран из потока + */ + void readScreen(boolean wordWrap) { + try { + for (int i = 0; i < linesPerScreen; i++) { + lineposes[i] = bdis.tell(); + lines[i] = readString(wordWrap); + } + lineposes[linesPerScreen] = bdis.tell(); + scrStart = lineposes[0]; + scrEnd = lineposes[linesPerScreen]; + } catch (IOException iox) { + iox.printStackTrace(); + } + } + + /** + * Очистить экран + */ + void clearScreen() { + for (int i = 0; i < linesPerScreen; i++) { + lineposes[i] = 0; + lines[i] = null; + } + lineposes[linesPerScreen] = 0; + } + + /** + * Перейти строчкой выше + */ + void lineUp() { + try { + if (scrStart > 0) { + bdis.seek(scrStart); + scrEnd = lineposes[linesPerScreen] = lineposes[linesPerScreen - 1]; + for (int i = linesPerScreen - 1; i > 0; i--) { + lines[i] = lines[i - 1]; + lineposes[i] = lineposes[i - 1]; + } + lines[0] = readStringBack(wordWrapGlobal); + scrStart = lineposes[0] = bdis.tell(); + bdis.seek(scrEnd); + } + } catch (IOException iox) { + return; + } + } + + /** + * Перейти строчкой ниже + */ + void lineDown() { + try { + if (scrEnd < bdis.getCapacity()) { + scrStart = lineposes[1]; + for (int i = 0; i < linesPerScreen - 1; i++) { + lines[i] = lines[i + 1]; + lineposes[i] = lineposes[i + 1]; + } + lineposes[linesPerScreen - 1] = lineposes[linesPerScreen]; + lines[linesPerScreen - 1] = readString(wordWrapGlobal); + lineposes[linesPerScreen] = scrEnd = bdis.tell(); + } + } catch (IOException iox) { + } + } + + /** + * Перейти экраном выше + */ + void screenUp() { + try { + bdis.seek(scrStart); + for (int i = 0; i < linesPerScreen; i++) { + readStringBack(false); + } + readScreen(wordWrapGlobal); + } catch (Exception iox) { + return; + } + } + + /** + * Перейти экраном ниже + */ + void screenDown() { + try { + if (scrEnd < bdis.getCapacity()) { + readScreen(wordWrapGlobal); + } + } catch (Exception iox) { + } + } + + /** + * Функция отрисовки + */ + protected void paint(Graphics g) { + g.drawImage(back, w/2, h/2, 3); + g.setColor(UI.def); + g.setFont(fntText); + for (int i = 0; i < linesPerScreen; i++) { + if (lines[i] != null) { + try { + parse(g, lines[i], 2, header + 2 + i * (fntTextHeight + 1)); //g.drawString(lines[i], 2, header + 2 + i * (fntTextHeight + 1), Graphics.LEFT | Graphics.TOP); + } catch (Exception ex) { + g.drawString(lines[i], 2, header + 2 + i * (fntTextHeight + 1), Graphics.LEFT | Graphics.TOP); + } + } + } + drawPosition(g); + UI.drawMenuInterface(g,caption,"Назад"); + } + + /** + * Обработчик нажатия клавиши + */ + protected void keyPressed(int key) { + int ga; + try { + ga = getGameAction(key); + } catch (Exception e) { + ga = 0; + } + if (key == KEY_NUM1)//Прыгнуть вверх + { + scrStart = bdis.bpos = 0; + readScreen(wordWrapGlobal); + } else if (key == KEY_NUM3) { + fntTextc++; + if (fntTextc > maxnumFont) { + fntTextc = 1; + } + switchFont(); + } else if (key == KEY_NUM9) { + fntTextc--; + if (fntTextc < 1) { + fntTextc = maxnumFont; + } + switchFont(); + } else if (key == KEY_NUM7)//Прыгнуть вниз + { + bdis.bpos = bdis.capacity - 3; + readScreen(wordWrapGlobal); + }if (ga==UP) { + lineUp(); + } else if (ga==DOWN) { + lineDown(); + } else if (ga==RIGHT) { + screenDown(); + } else if (ga==LEFT) { + screenUp(); + } else if (key == KEY_STAR) { + showimage=!showimage; + } else if (key == Key.rightSoftKey || key == Key.Back || key==KEY_NUM0) // выход + { + closeStream(); + } + repaint(); + } + + protected void pointerPressed(int pix, int piy) { + dry = piy; + int y = UI.getSoftBarHeight(); + if(pix<2*y && piy>h-y) { + closeStream(); + }else if(pix>w-2*y && piy>h-y) { + closeStream(); + } + } + + protected void pointerDragged(int pix, int piy) { + if(dry>piy) { + while(dry>piy) { + dry-=fntText.getHeight(); + lineDown(); + } + }else{ + while(dry h - footer) { + slend = h - footer; + } + } catch (Exception iox) { + return; + } + g.drawLine(w - 1, slpos, w - 1, slend); + } + + private Image getImage(String path) { + Image img = Image.createImage(1, 1); + try { + img = Image.createImage(path); + } catch (IOException ex) { + ex.printStackTrace(); + } + return img; + } + + public static String[] threshold(String s, char c, boolean remove) + { + Vector ml = new Vector(); + int j = s.length(); + String s2 = ""; + for(int k = 0; k < j; k++) + { + int i = s.charAt(k); + if(i == c) + { + if(s2.length() > 0) + { + if(!remove) s2+=" "+String.valueOf(c); + ml.addElement(s2); + s2 = ""; + } + } else + { + s2 = s2 + String.valueOf((char)i); + } + } + if(s2.length() > 0) { + if(!remove) s2+=" "+String.valueOf(c); + ml.addElement(s2); + } + String[] m = new String[ml.size()]; + ml.copyInto(m); + return m; + } + + private void getColor(Graphics g, String q) { + // Считывание цветов, которые записаны в виде названия цвета + if (q.equals("yellow")) g.setColor(255, 255, 0); + else if (q.equals("def")) g.setColor(UI.def); + else if (q.equals("pink")) g.setColor(255, 192, 203); + else if (q.equals("orange")) g.setColor(255, 165, 0); + else if (q.equals("gold")) g.setColor(255, 215, 0); + else if (q.equals("lime")) g.setColor(0, 255, 0); + else if (q.equals("red")) g.setColor(255, 0, 0); + else if (q.equals("green")) g.setColor(0, 128, 0); + else if (q.equals("blue")) g.setColor(0, 0, 255); + else if (q.equals("black")) g.setColor(0, 0, 0); + else if (q.equals("white")) g.setColor(255, 255, 255); + else if (q.equals("purple")) g.setColor(0, 0, 255); + else if (q.equals("maroon")) g.setColor(128, 0, 0); + else if (q.equals("0")) g.setColor(0, 0, 0); + // Считывание цветов в HEX + if (q.length()==6) g.setColor(Integer.parseInt(q,16)); + } + + private void switchFont() { + switch (fntTextc) { + case 1: + fntText = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); + init(); + break; + case 2: + fntText = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL); + init(); + break; + case 3: + fntText = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM); + init(); + break; + case 4: + fntText = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM); + init(); + break; + case 5: + fntText = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_LARGE); + init(); + break; + case 6: + fntText = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE); + init(); + break; + } + } +} \ No newline at end of file diff --git a/src/UI.java b/src/UI.java new file mode 100644 index 0000000..834cd7e --- /dev/null +++ b/src/UI.java @@ -0,0 +1,369 @@ + +import java.util.Calendar; +import javax.microedition.lcdui.*; + +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +/** + * + * @author aNNiMON + */ +public class UI { + + protected static final Font smallFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); + protected static final Font bigboldFont = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE); + public static Font stFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM); + public static Font bstFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM); + public static int w=getWidth(),h=getHeight(); + public static int col1=0xD0419f62, col2=0xD077da9a; + public static int curcol1=0xDCF8D6, curcol2=0x75B68C; + public static int textcolor=0xFFFFFF, timecolor=0xFFFFFF; + public static int textnc = 0x296321, shadow = 0x282828, def = 0xFFFFFF; + public static int osv=180; + //int col1=0xD0419f62, col2=0xD077da9a;джунгли + private static int MFHeight = smallFont.getHeight(); + private static boolean isLight=false; + + public static void drawSoftBar(Graphics g, String left, String right) { + int y = h - getSoftBarHeight() + 1; + int fontHeight = MFHeight; + int cY = (h + y + 1 - fontHeight) / 2; + if (isLight) { + g.setColor(col2); + g.fillRect(0, y - 1, w, h - y + 1); + } else { + drawRect(g, col2, col1, 0, y - 1, w, h - y + 1); + } + g.setColor(textcolor); + g.setFont(smallFont); + if (left != null) { + g.drawString(left, 2, cY, Graphics.TOP | Graphics.LEFT); + } + if (right != null) { + g.drawString(right, (w - 2), cY, Graphics.TOP | Graphics.RIGHT); + } + } + + public static void drawMenuInterface(Graphics g, String title, String leftsoft, String rightsoft) { + drawTitle(g, title); + drawTimeSoftBar(g, leftsoft, rightsoft); + } + public static void drawMenuInterface(Graphics g, String title, String rightsoft) { + drawTitle(g, title); + drawSoftBar(g, "", rightsoft); + } + + public static void drawTimeSoftBar(Graphics g, String left, String right) { + int y = h - getSoftBarHeight() + 1; + int fontHeight = MFHeight; + int cY = (h + y + 1 - fontHeight) / 2; + showTime(g, smallFont, w/2, h); + g.setColor(textcolor); + g.setFont(smallFont); + if (left != null) { + g.drawString(left, 2, cY, Graphics.TOP | Graphics.LEFT); + } + if (right != null) { + g.drawString(right, (w - 2), cY, Graphics.TOP | Graphics.RIGHT); + } + } + + public static void drawTitle(Graphics g, String title) { + if (isLight) { + g.setColor(col1); + g.fillRect(0, 0, w, getSoftBarHeight() + 1); + } else { + drawRect(g, col1, col2, 0, 0, w, getSoftBarHeight() + 1); + } + if (title != null) { + g.setColor(textcolor); + g.setFont(smallFont); + g.drawString(title, w / 2, 2, Graphics.TOP | Graphics.HCENTER); + } + } + + public static void drawSTR(Graphics g, String str, String cx, String cy, int x, int y) { + int color = 0x90626C68; + if (isLight) { + g.setColor(color); + g.fillRect(x - 5, y, smallFont.stringWidth(str + "H"), MFHeight); + } else { + drawRGB(g, color, transformARGBColorLight(color, -64), x - 5, y, smallFont.stringWidth(str + "H"), MFHeight); + } + color = 0x90335E9E; + if (isLight) { + g.setColor(color); + g.fillRect(x - 5 + smallFont.stringWidth(str + "H"), y, smallFont.stringWidth("" + cx + ":" + cy + "H"), MFHeight); + } else { + drawRGB(g, color, transformARGBColorLight(color, -64), x - 5 + smallFont.stringWidth(str + "H"), y, smallFont.stringWidth("" + cx + ":" + cy + "H"), MFHeight); + } + g.setColor(0x00); + g.setFont(smallFont); + if (str != null) { + g.drawString(str, x, y, Graphics.TOP | Graphics.LEFT); + } + if (!cx.equals("")) { + x = x + smallFont.stringWidth(str + "H"); + g.drawString(cx, x, y, Graphics.TOP | Graphics.LEFT); + } + if (!cy.equals("")) { + x = x + smallFont.stringWidth(cx + "H"); + g.drawString(cy, x, y, Graphics.TOP | Graphics.LEFT); + } + } + + public static void showTime(Graphics g, Font font, int x, int y) { + Calendar calendar = Calendar.getInstance(); + String s = calendar.get(11) + ""; + String s1 = calendar.get(12) + ""; + if (s.length() == 1) s = "0" + s; + if (s1.length() == 1) s1 = "0" + s1; + int r1=Effects.acolor(col2, 'r'); + int g1=Effects.acolor(col2, 'g'); + int b1=Effects.acolor(col2, 'b'); + int fh=UI.getSoftBarHeight()-2; + g.setColor(r1, g1, b1); + g.fillRect(0, (h-fh)+1, w, fh); + int k = font.stringWidth(s + ":" + s1) / 2; + g.setFont(font); + g.setColor(timecolor); + g.drawString(s + ":" + s1, x - k, y, 36); + } + + public static void drawSTR(Graphics g, String str, String cx, String cy) { + int allw; + int all1w = str.equals("") ? 0 : smallFont.stringWidth(str + "H"); + int all2w = cx.equals("") ? 0 : smallFont.stringWidth(cx + "H"); + int all3w = cy.equals("") ? 0 : smallFont.stringWidth(cy + "H"); + allw = all1w + all2w + all3w; + int x = 0; + x = w / 2 - allw / 2; + int y = h - 2 * getSoftBarHeight(); + if (isLight) { + g.setColor(col2); + g.fillRect(x - 5, y, allw, MFHeight); + } else { + drawRect(g, col2, 0x4EAFDA, x - 5, y, allw, MFHeight); + } + g.setColor(0x00); + g.setFont(smallFont); + if (str != null) { + g.drawString(str, x, y, Graphics.TOP | Graphics.LEFT); + } + if (!cx.equals("")) { + x = x + smallFont.stringWidth(str + "H"); + g.drawString(cx, x, y, Graphics.TOP | Graphics.LEFT); + } + if (!cy.equals("")) { + x = x + smallFont.stringWidth(cx + "H"); + g.drawString(cy, x, y, Graphics.TOP | Graphics.LEFT); + } + } + + public static int getWidth() { + return JM.midlet.cnv.getWidth(); + } + + public static int getHeight() { + return JM.midlet.cnv.getHeight(); + } + + static public int transformColorLight(int color, int light) { + int r = (color & 0xFF) + light; + int g = ((color >> 8) & 0xFF) + light; + int b = ((color >> 16) & 0xFF) + light; + if (r < 0) { + r = 0; + } else if (r > 255) { + r = 255; + } + if (g < 0) { + g = 0; + } else if (g > 255) { + g = 255; + } + if (b < 0) { + b = 0; + } else if (b > 255) { + b = 255; + } + return r | (g << 8) | (b << 16); + } + + static public int transformARGBColorLight(int color, int light) { + int r = (color & 0xFF) + light; + int g = ((color >> 8) & 0xFF) + light; + int b = ((color >> 16) & 0xFF) + light; + int a = ((color >> 24) & 0xFF) + light; + if (a < 0) { + a = 0; + } else if (a > 255) { + a = 255; + } + if (r < 0) { + r = 0; + } else if (r > 255) { + r = 255; + } + if (g < 0) { + g = 0; + } else if (g > 255) { + g = 255; + } + if (b < 0) { + b = 0; + } else if (b > 255) { + b = 255; + } + return (a << 24) | (r << 16) | (g << 8) | b; + } + + static public int trARGBBoolColorLight(int color, int light, + boolean ia, boolean ir, boolean ig, boolean ib) { + int r, g, b, a; + if (ir) { + r = ((color >> 16) & 0xFF) + light; + int qa = (color >> 24) & 0xff; + int qg = (color >> 8) & 0xff; + int qb = color & 0xff; + if (r < 0) { + r = 0; + } else if (r > 255) { + r = 255; + } + return (qa << 24) | (r << 16) | (qg << 8) | qb; + } + if (ig) { + g = ((color >> 8) & 0xFF) + light; + int qa = (color >> 24) & 0xff; + int qr = (color >> 16) & 0xff; + int qb = color & 0xff; + if (g < 0) { + g = 0; + } else if (g > 255) { + g = 255; + } + return (qa << 24) | (qr << 16) | (g << 8) | qb; + } + if (ib) { + b = (color & 0xFF) + light; + int qa = (color >> 24) & 0xff; + int qr = (color >> 16) & 0xff; + int qg = (color >> 8) & 0xff; + if (b < 0) { + b = 0; + } else if (b > 255) { + b = 255; + } + return (qa << 24) | (qr << 16) | (qg << 8) | b; + } + if (ia) { + a = ((color >> 24) & 0xFF); + int qr = (color >> 16) & 0xff; + int qg = (color >> 8) & 0xff; + int qb = color & 0xff; + if (a < 0) { + a = 0; + } else if (a > 255) { + a = 255; + } + return (a << 24) | (qr << 16) | (qg << 8) | qb; + } + return color; + } + + public static void drawRect(Graphics g, int color1, int color2, int x1, int y1, int w, int h) { + int r1 = ((color1 & 0xFF0000) >> 16); + int g1 = ((color1 & 0x00FF00) >> 8); + int b1 = (color1 & 0x0000FF); + int r2 = ((color2 & 0xFF0000) >> 16); + int g2 = ((color2 & 0x00FF00) >> 8); + int b2 = (color2 & 0x0000FF); + + int count = h / 3; + if (count < 0) { + count = -count; + } + if (count < 8) { + count = 8; + } + int crd1, crd2; + + for (int i = count - 1; i >= 0; i--) { + crd1 = i * h / count + y1; + crd2 = (i + 1) * h / count + y1; + if (crd1 == crd2) { + continue; + } + g.setColor(i * (r2 - r1) / (count - 1) + r1, i * (g2 - g1) / (count - 1) + g1, i * (b2 - b1) / (count - 1) + b1); + g.fillRect(x1, crd1, w, crd2 - crd1); + } + } + + public static void drawTransparentRoundRect(Graphics graphics, int color1, int color2, int xn, int yn, int wdh, int hgt, int ar, boolean up) { + int r1 = ((color1 & 0xFF0000) >> 16); + int g1 = ((color1 & 0x00FF00) >> 8); + int b1 = (color1 & 0x0000FF); + int r2 = ((color2 & 0xFF0000) >> 16); + int g2 = ((color2 & 0x00FF00) >> 8); + int b2 = (color2 & 0x0000FF); + + int r,g,b; + try { + wdh+=xn; + hgt+=yn; + for (int i=yn; i> 24) & 0xff; + int r1 = ((color1 & 0x00FF0000) >> 16); + int g1 = ((color1 & 0x0000FF00) >> 8); + int b1 = (color1 & 0x000000FF); + int a2 = (color2 >> 24) & 0xff; + int r2 = ((color1 & 0x00FF0000) >> 16); + int g2 = ((color2 & 0x0000FF00) >> 8); + int b2 = (color2 & 0x000000FF); + + int count = h / 3; + if (count < 0) { + count = -count; + } + if (count < 8) { + count = 8; + } + int crd1, crd2; + + for (int i = count - 1; i >= 0; i--) { + crd1 = i * h / count + y1; + crd2 = (i + 1) * h / count + y1; + if (crd1 == crd2) { + continue; + } + int[] pixelArray = new int[w * (crd2 - crd1)]; + for (int zi = 0; zi < pixelArray.length; zi++) { + pixelArray[zi] = (int) ((i * (a2 - a1) / (count - 1) + a1) << 24) | + ((i * (r2 - r1) / (count - 1) + r1) << 16) | + ((i * (g2 - g1) / (count - 1) + g1) << 8) | (i * (b2 - b1) / (count - 1) + b1); + } + g.drawRGB(pixelArray, 0, w, x1, crd1, w, crd2 - crd1, true); + } + } + + static public int getSoftBarHeight() { + return smallFont.getHeight() + 2; + } +} diff --git a/src/Util.java b/src/Util.java new file mode 100644 index 0000000..8129d31 --- /dev/null +++ b/src/Util.java @@ -0,0 +1,116 @@ +import java.io.*; +import java.util.Vector; + +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +/** + * + * @author aNNiMON + */ +public class Util { + + public static String[] getDataAList(String path) { + String[] list = null; + try { + InputStream is = JM.midlet.getClass().getResourceAsStream("/xml/" + path); + list = threshold(getText(is), "\n", true); + is.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + return list; + } + + public static String[] getPathAList(String path) { + String[] list = null; + try { + InputStream is = JM.midlet.getClass().getResourceAsStream("/xml/" + path); + list = threshold(getText(is), "\n", false); + is.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + return list; + } + + public static String getText(InputStream is) { + StringBuffer strBuff = new StringBuffer(); + int ch = 0; + try { + while ((ch = is.read()) != -1) strBuff.append((char) ((ch >= 0xc0 && ch <= 0xFF) ? (ch + 0x350) : ch)); + } catch (Exception e) {e.printStackTrace();} + return strBuff.toString(); + } + + public static String[] threshold(String s, String s1, boolean data) + { + Vector ml = new Vector(); + Vector vl = new Vector(); + char c = s1.charAt(0); + int j = s.length(); + String s2 = ""; + for(int k = 0; k < j; k++) + { + int i = s.charAt(k); + if(i == c) + { + if(s2.length() > 0) + { + if(data) ml.addElement(s2.substring(0, s2.lastIndexOf('-')).replace('^', '-').trim()); + else vl.addElement(s2.substring(s2.lastIndexOf('-')+1).replace('^', '-').trim()); + s2 = ""; + } + } else + { + s2 = s2 + String.valueOf((char)i); + } + } + if(s2.length() > 0) { + if(data) ml.addElement(s2.substring(0, s2.lastIndexOf('-')).replace('^', '-').trim()); + else vl.addElement(s2.substring(s2.lastIndexOf('-')+1).replace('^', '-').trim()); + } + String[] m; + if(data) { + m = new String[ml.size()]; + ml.copyInto(m); + }else{ + m = new String[vl.size()]; + vl.copyInto(m); + } + return m; + } + + public static void getUI(String path) { + try { + String[] k = null; + InputStream is = JM.midlet.getClass().getResourceAsStream(path); + k = threshold(getText(is), "\n", false); + UI.col1 = color(k[0]); + UI.col2 = color(k[1]); + UI.curcol1 = color(k[2]); + UI.curcol2 = color(k[3]); + UI.osv = Integer.parseInt(k[4].trim().replace('^', '-')); + UI.textcolor = color(k[5]); + UI.timecolor = color(k[6]); + UI.textnc = color(k[7]); + UI.shadow = color(k[8]); + UI.def = color(k[9]); + is.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + private static int color(String str) { + int i = 0; + try { + i=Integer.parseInt(str.trim(), 16); + }catch(Exception ex) { + i=Integer.parseInt(str.trim()); + } + return i; + } +} diff --git a/src/aNMPWR.java b/src/aNMPWR.java new file mode 100644 index 0000000..edbcac6 --- /dev/null +++ b/src/aNMPWR.java @@ -0,0 +1,266 @@ +import javax.microedition.lcdui.*; + + +public class aNMPWR extends Canvas implements Runnable { + + public String pathFile, aaall; + private int FileY, CursorY, startPrintFile; + private int cu, h, w, sh, fh; + private Font MainFont = Font.getFont(Font.STYLE_PLAIN, Font.STYLE_PLAIN, Font.SIZE_SMALL); + private Font BordFont = Font.getFont(Font.STYLE_PLAIN, Font.STYLE_BOLD, Font.SIZE_SMALL); + public static boolean screen; + private String[][] back = new String[10][50]; + private String[][] data = new String[10][50]; + private int[] index = new int[10]; + private int idx=0, len=0; + private Image iback; + private int bb=0; + private long ty; + private boolean prkr=false, moveleft=true; + private Thread thr; + + public aNMPWR(Image img) { + setFullScreenMode(true); + FileY = 0; CursorY = 0; startPrintFile = 0; cu = 0; + screen = true; + iback=img; + thr = new Thread(this); + pathFile = "main.al"; + w = getWidth(); h = getHeight(); + fh = MainFont.getHeight() + 2; + sh = BordFont.getHeight() + 3; + thr.start(); + restart(); + } + + public aNMPWR(String s) { + setFullScreenMode(true); + FileY = 0; CursorY = 0; startPrintFile = 0; cu = 0; + screen = true; + pathFile = s; + thr = new Thread(this); + w = getWidth(); h = getHeight(); + fh = MainFont.getHeight() + 2; + sh = BordFont.getHeight() + 3; + thr.start(); + restart(); + } + + public void run() { + while(true) { + if(prkr) { + if(moveleft) { + if (bb > -(len-w)) { + bb -= 2; + } else {moveleft=!moveleft;} + }else{ + if (bb < 0) { + bb += 2; + } else {moveleft=!moveleft;} + } + try { + Thread.sleep(100L); + } catch (Exception ex) {} + repaint(); + } + } + } + + public void paint(Graphics g) { + setFullScreenMode(screen); + g.drawImage(iback, w/2, h/2, 3); + mainDisp(g); + if(pathFile.equals("main.al")) UI.drawMenuInterface(g, JM.name, "Выбор","Назад"); + else UI.drawMenuInterface(g, data[idx-1][index[idx-1]], "Выбор","Назад"); + } + + private void mainDisp(Graphics g) { + g.setFont(MainFont); + g.translate(0, sh); + FileY = 0; + for (int i = startPrintFile; i < data[idx].length; i++) { + if (FileY == CursorY) { + drawCursor(g); + g.setColor(UI.shadow); + g.setFont(BordFont); + len = BordFont.stringWidth(data[idx][i]); + if(len0) pathFile=back[idx-1][index[idx]]; + if(idx==0) pathFile="main.al"; + CursorY = index[idx]*fh; + cu = index[idx]; + startPrintFile = 0; + } + + private void nextDir(int s) { + if(back[idx][s].toLowerCase().endsWith(".al")) { + pathFile = back[idx][s]; + index[idx]=s; + idx++; + restart(); + cu = 0; + startPrintFile = 0; + CursorY = 0; + }else{ + TextView tv = new TextView(iback); + //Viewer tv = new Viewer(Util.getText(JM.midlet.getClass().getResourceAsStream(back[idx][s])), this); + tv.openFile(back[idx][s], this, data[idx][s]); + JM.midlet.dsp.setCurrent(tv); + } + } + + public void keyPressed(int i) { + bb=0;moveleft=true; + int ga; + try { + ga = getGameAction(i); + } catch (Exception e) { + ga = 0; + } + if (i == Key.leftSoftKey) { + nextDir(cu); + } + if (i == Key.rightSoftKey || i==Key.Back || i==KEY_NUM0) { + backDir(); + } + switch (ga) { + case RIGHT: + case DOWN: + cursorDown(); + break; + case LEFT: + case UP: + cursorUp(); + break; + case FIRE: + nextDir(cu); + break; + } + switch (i) { + case 35: + screen=!screen; + setFullScreenMode(screen); + JM.midlet.cnv.setFullScreenMode(screen); + UI.w = w = getWidth(); UI.h = h = getHeight(); + break; + } + repaint(); + } + + protected void pointerPressed(int pix, int piy) { + int q = UI.getSoftBarHeight(); + if(pix<2*q && piy>h-q) { + nextDir(cu); + }else if(pix>w-2*q && piy>h-q) { + JM.midlet.destroyApp(true); + }else{ + int cu1=cu; + piy-=q; + if(piy>0 && piy 0) { + if (cu == data[idx].length - 1) { + CursorY = 0; + cu = 0; + startPrintFile = 0; + } else if (cu > (h - 2 * sh) / fh - 3) { + if (CursorY >= h - 2 * sh - 2 * fh) { + startPrintFile++; + cu++; + } else { + cu++; + CursorY += fh; + } + } else { + CursorY += fh; + cu++; + } + return; + } + } + + private void cursorUp() { + if (data[idx].length > 0) { + if (cu == 0) { + cu = data[idx].length - 1; + if (data[idx].length > (h - 2 * sh) / fh) { + startPrintFile = (data[idx].length - (h - 2 * sh) / fh) + 1; + CursorY = (data[idx].length - 1 - startPrintFile) * fh; + } else { + CursorY = (data[idx].length - 1) * fh; + } + } else if ((CursorY == 0) & (cu > 0)) { + startPrintFile--; + cu--; + } else if (CursorY > 0) { + CursorY -= fh; + cu--; + } + } + } +} diff --git a/src/com/vmx/BufDataInputStream.java b/src/com/vmx/BufDataInputStream.java new file mode 100644 index 0000000..e7c5364 --- /dev/null +++ b/src/com/vmx/BufDataInputStream.java @@ -0,0 +1,575 @@ +/**************************************\ + * Буферизованный ввод/вывод * + ** ** + * Буферизованный поток ввода * + * (c) 2005+, Vitali Filippov [VMX] * + * * + * BufDataInputStream.java * + * Created on 24 Oct 2005, 13:25 * +\**************************************/ +package com.vmx; + +import java.io.*; +import javax.microedition.io.*; + +/** + * Class for buffered data input + * For documentation, see java.io.DataInput + */ +public class BufDataInputStream extends InputStream implements DataInput { + + public static byte buffer[]; + protected int bmax; + // protected int bstreampos; + protected int markedPos; + public static int capacity, is_available, bpos, blen; + protected boolean markSupp; + protected InputStream is; + + /** + * Конструктор + */ + public BufDataInputStream(int bufsize, InputStream iis, boolean read) throws IOException { + if (bufsize <= 0) { + throw new IOException("Buffer size must be greater than 0"); // bmax = bufsize; + } + bpos = blen = 0; +// bstreampos = 0; + is = iis; + + + + capacity = is_available = is.available (); + + buffer = new byte[capacity]; + if (is != null)//Если мы создаём файл то is нулевой потому из него не читаем + { + is.read(buffer); + } + bmax = is_available; + + // if (markSupp = is.markSupported ()) + // is.mark (capacity + 0x100); + markedPos = -1; + } + + /** + * Закрытие буферизованного потока вместе с тем, на котором + * он основан. + */ + public void close() throws IOException { + if (is != null) { + is.close(); + } + } + + /** + * Возвращает количество байт, которые ещё возможно прочесть из + * этого буферизованного потока. + */ + public int available() { + return blen - bpos + is_available; + + } + + /** + * Получить объём потока + */ + public int getCapacity() { + return capacity; + } + + /** + * Перейти к положению pos + */ + public void seek(int pos) { + // System.out.println (" <= " + pos + " < " + (blen)); + /* if (pos >= bstreampos && pos < bstreampos+blen) + { bpos = pos-bstreampos; + + }else + { System.out.println("seek else"); + is.reset (); + is.skip (pos); + bufferize (); + }*/ + + bpos = pos; + } + + /** + * Возвращает текущую позицию в буферизованном потоке. + */ + public int tell() throws IOException { + return capacity - available(); + // return bpos; + } + + /** + * Ставит метку, на которую возвращаться потом можно по reset. + */ + public void mark(int readlimit) { + try { + markedPos = tell(); + } catch (IOException ix) { + markedPos = -1; + } + } + + /** + * Возвращает, доступны ли функции mark() и reset()? + */ + public boolean markSupported() { + return is.markSupported(); + } + + /** + * Перейти на последнюю заданную mark'ом позицию. + */ + public void reset() throws IOException { + if (markedPos >= 0) { + seek(markedPos); + } else { + throw new IOException("call mark() before reset()"); + } + } + + /** + * пропустить n байт + */ + public long skip(long n) throws IOException { + if (n < blen - bpos) { + bpos += n; + return n; + } else { + long act = blen - bpos; + n -= blen - bpos; + act += is.skip(n); + // bufferize (); + return act; + } + } + + /** + * Прочитать массив из потока: прочитать и записать максимум len байт, + * записать их в b[], начиная со смещения off, и вернуть количество + * считанных байт. + */ + /* public int read (byte [] b, int off, int len) throws IOException + { + int rest = len, pos = off, n; + while (rest > 0) + { + // if (bpos >= blen && bufferize() <= 0) // данные кончились? + if (bpos > buffer.length) // данные кончились? + { + blen = 0; + break; + } // если буфер кончился, а bufferize заполнило его чем-то - будет ок + n = rest; + if (n > blen-bpos) + n = blen-bpos; + System.arraycopy (buffer, bpos, b, pos, n); + pos += n; + bpos += n; + rest -= n; + } + return len-rest; + }*/ + /** + * Прочитать массив b[] полностью - эквивалентно read (b, 0, b.length); + */ + /* public int read (byte [] b) throws IOException + { + return read (b, 0, b.length); + }*/ + /** + * Прочитать 1 байт из потока, вернуть его, если успешно, и -1, + * если достигнут конец потока. + */ + public int read() throws IOException { + /* if (bpos >= blen && bufferize() <= 0){ // данные кончились? + return -1;}*/ + if (bpos > buffer.length) { + return -1; + } + return ((int) buffer[bpos++]) & 0xFF; + } + + /** + * Прочитать 1 байт из потока назад, если начало файла - вернуть -1. + * Для работы требуется поддержка mark() и reset() + */ + public int readBack() throws IOException { + if (bpos == 0) { + if (available() == capacity /* || !markSupp */) { + return -1; + } + int old = tell(); + // bstreampos -= bmax; + // if (bstreampos < 0) + // bstreampos = 0; + // is.reset (); + // is.skip (bstreampos); + // bufferize (); + bpos = old; + } + return ((int) buffer[--bpos]) & 0xFF; + } + + /** + * Если буфер не полон, дочитать и дополнить его. + */ + /* public void flush () throws IOException + { + if (is_available > 0) + { + if (bpos != 0 && bpos != blen) + System.arraycopy (buffer, bpos, buffer, 0, blen-bpos); + blen -= bpos; + // bstreampos += bpos; + bpos = 0; + int blenp = is.read (buffer, blen, bmax-blen); + blen += blenp; + is_available -= blenp; + } + }*/ + /** + * Убивает текущий буфер и буферизует с текущего положения InputStream'а + */ + /* protected int bufferize () throws IOException + { + // is_available = is.available (); + is_available = available (); + + // bstreampos = capacity - is_available; + blen = bpos = 0; + if (is_available > 0) + { + // blen = is.read (buffer, 0, bmax); + blen = available (); + is_available -= blen; + } + + return blen; + + }*/ + /** + * Обновить содержимое буфера в соответствии с потоком + */ + /* public void updateBuffer () throws IOException + { + is.reset (); + // is.skip (bstreampos); + // bufferize (); + }*/ + /** + * Прочитать булево значение из потока (см. DataInput) + */ + public boolean readBoolean() throws IOException { + int r = read(); + if (r == -1) { + throw new IOException("EOF"); + } + return r != 0; + } + + /** + * Прочитать байт из потока; если достигнут конец потока, + * генерируется исключение IOException с сообщением "EOF" (см. DataInput) + */ + public byte readByte() throws IOException { + int r = read(); + if (r == -1) { + throw new IOException("EOF"); + } + return (byte) r; + } + + /** + * Прочитать символ (Unicode Big Endian) из потока (см. DataInput) + */ + public char readChar() throws IOException { + return (char) ((readUnsignedByte() << 8) | readUnsignedByte()); + } + + /** + * Прочитать массив b[] из потока целиком, если целиком не получится, + * сгенерировать исключение IOException с сообщением "EOF" + */ + public void readFully(byte[] b) throws IOException { + if (read(b) < b.length) { + throw new IOException("EOF"); + } + } + + /** + * Прочитать в точности len байт и записать их в массив b[], начиная + * со смещения off. Если достигнут конец файла - сгенерировать + * исключение IOException с сообщением "EOF" + */ + public void readFully(byte[] b, int off, int len) throws IOException { + if (read(b, off, len) < len) { + throw new IOException("EOF"); + } + } + + /** + * Прочитать из потока целое число (см. DataInput) + */ + public int readInt() throws IOException { + return (readUnsignedByte() << 24) | + (readUnsignedByte() << 16) | + (readUnsignedByte() << 8) | + (readUnsignedByte()); + } + + /** + * Прочитать из потока длинное целое число (см. DataInput) + */ + public long readLong() throws IOException { + byte bb[] = new byte[8]; + readFully(bb); + return (bb[0] << 24) | + (bb[1] << 16) | + (bb[2] << 8) | + (bb[3]); + } + + /** + * Прочитать из потока короткое целое число (см. DataInput) + */ + public short readShort() throws IOException { + return (short) ((readUnsignedByte() << 8) | readUnsignedByte()); + } + + /** + * Прочитать из потока беззнаковый байт (см. DataInput) + */ + public int readUnsignedByte() throws IOException { + return ((int) readByte()) & 0xFF; + } + + /** + * Прочитать из потока беззнаковое короткое целое (см. DataInput) + */ + public int readUnsignedShort() throws IOException { + return ((int) readShort()) & 0xFFFF; + } + + /** + * Пропустить len байт (см. DataInput) + */ + public int skipBytes(int len) throws IOException { + return (int) skip(len); + } + + /** + * Прочитать из потока строку в UTF-8 в соответствии со + * спецификацией в DataInput (см. DataInput) + */ + public String readUTF() throws IOException, UTFDataFormatException { + String s = ""; + int n = readUnsignedShort(); + byte b[] = new byte[n]; + readFully(b); + return new String(b, 0, b.length, "UTF-8"); + } + + /** Прочитать из потока символ в кодировке UTF-8 */ + public char readCharUTF() throws IOException, UTFDataFormatException { + int b, c, d; + b = read(); + if (b == -1) { + return (char) -1; + } + if ((b & 0x80) == 0) { + return (char) b; + } else if ((b & 0xE0) == 0xC0) { + c = read(); + if ((c & 0xC0) != 0x80) { + throw new UTFDataFormatException(); + } + return (char) (((b & 0x1F) << 6) | (c & 0x3F)); + } else if ((b & 0xF0) == 0xE0) { + c = read(); + d = read(); + if ((c & 0xC0) != 0x80 || (d & 0xC0) != 0x80) { + throw new UTFDataFormatException(); + } + return (char) (((b & 0x0F) << 12) | ((c & 0x3F) << 6) | (d & 0x3F)); + } + throw new UTFDataFormatException(); + } + + /** Прочитать из потока символ в кодировке UTF-8 НАЗАД */ + public char readCharBackUTF() throws IOException, UTFDataFormatException { + int b, c, d; + d = readBack(); + c = readBack(); + b = readBack(); + if (d == -1) { + return (char) -1; + } + if ((d & 0x80) == 0) { + read(); + read(); + return (char) d; + } else if ((c & 0xE0) == 0xC0 && (d & 0xC0) == 0x80) { + read(); + return (char) (((c & 0x1F) << 6) | (d & 0x3F)); + } else if ((b & 0xF0) == 0xE0 && (c & 0xC0) == 0x80 && (d & 0xC0) == 0x80) { + return (char) (((b & 0x0F) << 12) | ((c & 0x3F) << 6) | (d & 0x3F)); + } + throw new UTFDataFormatException(); + } + + /** + * Прочитать из потока максимум count символов в кодировке UTF-8 + */ + public String readUTF(int count) throws IOException, UTFDataFormatException { + String s = ""; + int i = 0; + int b = 0, c = 0, d = 0; + while (i < count && available() > 0) { + s += readCharUTF(); + i++; + } + return s; + } + + /** + * Пропустить в потоке максимум count символов в кодировке UTF-8. + * Не очень чётко проверяет соответствие данных кодировке. + */ + public int skipUTF(int count) throws IOException, UTFDataFormatException { + byte b; + int i = 0, r = 0; + while (i < count) { + b = readByte(); + if ((b & 0x80) == 0) { + r++; + } else if ((((int) b) & 0xE0) == 0xC0) { + readByte(); + r += 2; + } else if ((((int) b) & 0xF0) == 0xE0) { + readShort(); + r += 3; + } else { + throw new UTFDataFormatException(); + } + i++; + } + return r; + } + + /** + * Проверить наличие BOM UTF-8 сигнатуры + */ + public boolean checkBOM() { + try { + if (available() < 3 || + read() != 0xEF || + read() != 0xBB || + read() != 0xBF) { + return false; + } + } catch (IOException iox) { + return false; + } + return true; + } + + /** + * Поиск группы байт в массиве buffer + */ + public boolean poisk(byte[] b) { + if (b == null) { + return false; + } + int po = 0; + for (int i = bpos + 1; i < buffer.length; i++) { + po = 0; + if (buffer[i] == b[0]) { + for (int j = 0; j < b.length; j++) { //System.out.println("b "+b[j]); + if (buffer[i + j] == b[j]) { + po += 1; + } else { + break; + } + } + } + if (po == b.length) { + bpos = i; + break; + } + + + } + if (po > 0) { + return true; + } else { + return false; + } + } + + /** + *Заменяем старый редактируемый текст на новый + * @param editStart int - позиция с которой заменить текст + * @param oldlen int - предыдущая длинна текста в байтах + * @param newbyte[] новый текст в байтах + */ + public void zamenitj(int editStart, int oldlen, byte newbyte[]) { + if (oldlen > newbyte.length) { + udalitj(editStart, oldlen - newbyte.length);// Если предыдущая длинна текста больше + } else if (oldlen < newbyte.length) { + dobavitj(editStart, newbyte.length - oldlen);// Если предыдущая длинна текста меньше + } + try { + + System.arraycopy(newbyte, 0, buffer, editStart, newbyte.length); + + } catch (Exception ex) { + } + + } + + /** + * Удаление байтов + * @param editStart int - позиция с которой удалить + * @param count int - количество удаляемых байтов + */ + public void udalitj(int editStart, int count) { + + + try { + byte newbuffer[] = new byte[buffer.length - count]; + + System.arraycopy(buffer, 0, newbuffer, 0, editStart); + System.arraycopy(buffer, editStart + count, newbuffer, editStart, buffer.length - (editStart + count)); + + buffer = newbuffer; + newbuffer = null; + + } catch (Exception ex) { + } + } + + /** + * Добавление байтов + * @param editStart int - позиция с которой добавить + * @param count int - количество добавляемых байтов + */ + public void dobavitj(int editStart, int count) { + + try { + byte newbuffer[] = new byte[buffer.length + count]; + System.arraycopy(buffer, 0, newbuffer, 0, editStart); + System.arraycopy(buffer, editStart, newbuffer, editStart + count, buffer.length - editStart); + + buffer = newbuffer; + newbuffer = null; + } catch (Exception ex) { + } + } +} diff --git a/src/com/vmx/InputStreamCloser.java b/src/com/vmx/InputStreamCloser.java new file mode 100644 index 0000000..d2a8a5b --- /dev/null +++ b/src/com/vmx/InputStreamCloser.java @@ -0,0 +1,8 @@ +package com.vmx; + + + +public interface InputStreamCloser +{ + public void close (); +} diff --git a/src/com/vmx/InputStreamDecoder.java b/src/com/vmx/InputStreamDecoder.java new file mode 100644 index 0000000..8ebfd93 --- /dev/null +++ b/src/com/vmx/InputStreamDecoder.java @@ -0,0 +1,90 @@ +package com.vmx; + +import java.io.*; + +public class InputStreamDecoder +{ + int enc; + BufDataInputStream bdis; + /** Конструктор */ + public InputStreamDecoder (InputStream is, String enc) throws UnsupportedEncodingException, IOException + { + if (enc.compareTo ("UTF-8") == 0) + this.enc = 1; + else if (enc.compareTo ("windows-1251") == 0) + this.enc = 2; + else + throw new UnsupportedEncodingException ("Encoding " + enc + " is not supported by InputStreamDecoder"); + bdis = new BufDataInputStream (2048, is,true); + } + /** Конструктор */ + public InputStreamDecoder (BufDataInputStream bdis, String enc) throws UnsupportedEncodingException + { + if (enc.compareTo ("UTF-8") == 0) + this.enc = 1; + else if (enc.compareTo ("windows-1251") == 0) + this.enc = 2; + else + throw new UnsupportedEncodingException ("Encoding " + enc + " is not supported by InputStreamDecoder"); + this.bdis = bdis; + } + /** Считать символ */ + public char readChar () throws IOException + { + char c = (char)-1; + if (bdis.available () > 0) + { + if (enc == 2) + { + int i = bdis.read(); + if (i > -1) + c = StringEncoder.decodeCharCP1251 ((byte)i); + } + else if (enc == 1) + c = bdis.readCharUTF (); + else + throw new IOException ("Internal InputStreamDecoder error"); + } + return c; + } + /** Считать строку длиной максимум len */ + public String readChars (int len) throws IOException + { + if (bdis.available () <= 0) + return null; + if (enc == 1) + return bdis.readUTF (len); + else if (enc == 2) + { + byte [] bs = new byte [len]; + int rl = bdis.read (bs); + return StringEncoder.decodeString (bs, 0, rl, "windows-1251"); + } + throw new IOException ("Internal InputStreamDecoder error"); + } + /** Считать символ назад */ + public char readCharBack () throws IOException + { + if (bdis.tell () <= 0) + return (char)-1; + if (enc == 1) + return bdis.readCharBackUTF (); + else if (enc == 2) + { + int i = bdis.readBack(); + if (i == -1) + return (char)-1; + return StringEncoder.decodeCharCP1251 ((byte)i); + } + throw new IOException ("Internal InputStreamDecoder error"); + } + /** Пропустить n символов, возвращает число пропущенных байт */ + public int skipChars (int n) throws IOException + { + if (enc == 1) + return bdis.skipUTF (n); + else if (enc == 2) + return bdis.skipBytes (n); + throw new IOException ("Internal InputStreamDecoder error"); + } +} diff --git a/src/com/vmx/StringEncoder.java b/src/com/vmx/StringEncoder.java new file mode 100644 index 0000000..8abc085 --- /dev/null +++ b/src/com/vmx/StringEncoder.java @@ -0,0 +1,114 @@ +package com.vmx; + +import java.io.UnsupportedEncodingException; + +public class StringEncoder +{ + /** Таблица кодировки "windows-1251" */ + protected static char cp1251 [] = + { + '\u0410', '\u0411', '\u0412', '\u0413', '\u0414', '\u0415', '\u0416', + '\u0417', '\u0418', '\u0419', '\u041A', '\u041B', '\u041C', '\u041D', + '\u041E', '\u041F', '\u0420', '\u0421', '\u0422', '\u0423', '\u0424', + '\u0425', '\u0426', '\u0427', '\u0428', '\u0429', '\u042A', '\u042B', + '\u042C', '\u042D', '\u042E', '\u042F', '\u0430', '\u0431', '\u0432', + '\u0433', '\u0434', '\u0435', '\u0436', '\u0437', '\u0438', '\u0439', + '\u043A', '\u043B', '\u043C', '\u043D', '\u043E', '\u043F', '\u0440', + '\u0441', '\u0442', '\u0443', '\u0444', '\u0445', '\u0446', '\u0447', + '\u0448', '\u0449', '\u042A', '\u044B', '\u044C', '\u044D', '\u044E', + '\u044F' + }; + /** Конструктор. Пустой. */ + public StringEncoder () + { + } + /** Кодировать строку s в кодировку enc */ + public static byte [] encodeString (String s, String enc) throws UnsupportedEncodingException + { + byte [] bs; + try + { + bs = s.getBytes (enc); + } + catch (UnsupportedEncodingException x) + { + if (enc.compareTo ("windows-1251") == 0) + { + bs = new byte [s.length ()]; + for (int i = 0; i < s.length (); i++) + bs [i] = encodeCharCP1251 (s.charAt (i)); + return bs; + } + throw x; + } + return bs; + } + /** Получить длину строки s в байтах в кодировке enc */ + public static int getEncodedLength (String s, String enc) throws UnsupportedEncodingException + { + byte [] bs; + try + { + bs = s.getBytes (enc); + return bs.length; + } + catch (UnsupportedEncodingException x) + { + if (enc.compareTo ("windows-1251") == 0) + return s.length (); + throw x; + } + } + /** Декодировать участок массива b длиной len со смещения off из кодировки enc */ + public static String decodeString (byte [] bs, int off, int len, String enc) throws UnsupportedEncodingException + { + String s; + try + { + s = new String (bs, off, len, enc); + } + catch (UnsupportedEncodingException x) + { + if (enc.compareTo ("windows-1251") == 0) + { + s = ""; + for (int i = 0; i < len; i++) + s += decodeCharCP1251 (bs [off+i]); + return s; + } + throw x; + } + return s; + } + /** Декодировать символ в windows-1251 */ + public static char decodeCharCP1251 (byte b) + { + int ich = b & 0xff; + if (ich == 0xb8) // ё + return 0x0451; + else if (ich == 0xa8) // Ё + return 0x0401; + else if (ich >= 0xc0) + return cp1251 [ich-192]; + return (char)ich; + } + /** Кодировать символ в windows-1251 */ + public static byte encodeCharCP1251 (char ch) + { + if (ch > 0 && ch < 128) + return (byte) ch; + else if (ch == 0x401) + return -88; // Ё + else if (ch == 0x404) + return -86; // Є + else if (ch == 0x407) + return -81; // Ї + else if (ch == 0x451) + return -72; // ё + else if (ch == 0x454) + return -70; // є + else if (ch == 0x457) + return -65; // ї + return (byte)((byte)(ch) + 176); + } +} diff --git a/src/res/1.gif b/src/res/1.gif new file mode 100644 index 0000000..6eb97eb Binary files /dev/null and b/src/res/1.gif differ diff --git a/src/res/2.png b/src/res/2.png new file mode 100644 index 0000000..e649dd0 Binary files /dev/null and b/src/res/2.png differ diff --git a/src/res/3.png b/src/res/3.png new file mode 100644 index 0000000..bc08b66 Binary files /dev/null and b/src/res/3.png differ diff --git a/src/res/4.gif b/src/res/4.gif new file mode 100644 index 0000000..c2cca46 Binary files /dev/null and b/src/res/4.gif differ diff --git a/src/res/5.gif b/src/res/5.gif new file mode 100644 index 0000000..7b31de0 Binary files /dev/null and b/src/res/5.gif differ diff --git a/src/res/aow.gif b/src/res/aow.gif new file mode 100644 index 0000000..de4dbd3 Binary files /dev/null and b/src/res/aow.gif differ diff --git a/src/res/c1.png b/src/res/c1.png new file mode 100644 index 0000000..79417eb Binary files /dev/null and b/src/res/c1.png differ diff --git a/src/res/c2.jpg b/src/res/c2.jpg new file mode 100644 index 0000000..27be83e Binary files /dev/null and b/src/res/c2.jpg differ diff --git a/src/res/cs.png b/src/res/cs.png new file mode 100644 index 0000000..dd9b684 Binary files /dev/null and b/src/res/cs.png differ diff --git a/src/res/d.gif b/src/res/d.gif new file mode 100644 index 0000000..c03cb08 Binary files /dev/null and b/src/res/d.gif differ diff --git a/src/res/diavol.gif b/src/res/diavol.gif new file mode 100644 index 0000000..78165b8 Binary files /dev/null and b/src/res/diavol.gif differ diff --git a/src/res/hs.gif b/src/res/hs.gif new file mode 100644 index 0000000..df2ff4f Binary files /dev/null and b/src/res/hs.gif differ diff --git a/src/res/icon.png b/src/res/icon.png new file mode 100644 index 0000000..4e3c58b Binary files /dev/null and b/src/res/icon.png differ diff --git a/src/res/logo1.png b/src/res/logo1.png new file mode 100644 index 0000000..db88929 Binary files /dev/null and b/src/res/logo1.png differ diff --git a/src/res/logo2.png b/src/res/logo2.png new file mode 100644 index 0000000..db24b38 Binary files /dev/null and b/src/res/logo2.png differ diff --git a/src/res/mario.png b/src/res/mario.png new file mode 100644 index 0000000..150174d Binary files /dev/null and b/src/res/mario.png differ diff --git a/src/res/mia1.jpg b/src/res/mia1.jpg new file mode 100644 index 0000000..a53b49d Binary files /dev/null and b/src/res/mia1.jpg differ diff --git a/src/res/mia2.png b/src/res/mia2.png new file mode 100644 index 0000000..3187edf Binary files /dev/null and b/src/res/mia2.png differ diff --git a/src/res/nitro.gif b/src/res/nitro.gif new file mode 100644 index 0000000..8b959d1 Binary files /dev/null and b/src/res/nitro.gif differ diff --git a/src/res/oboroten.gif b/src/res/oboroten.gif new file mode 100644 index 0000000..da75dcc Binary files /dev/null and b/src/res/oboroten.gif differ diff --git a/src/res/red.jpg b/src/res/red.jpg new file mode 100644 index 0000000..2ad7a7e Binary files /dev/null and b/src/res/red.jpg differ diff --git a/src/res/urban.png b/src/res/urban.png new file mode 100644 index 0000000..49fcf06 Binary files /dev/null and b/src/res/urban.png differ diff --git a/src/res/wolf.png b/src/res/wolf.png new file mode 100644 index 0000000..140500e Binary files /dev/null and b/src/res/wolf.png differ diff --git a/src/txt/3DPoolHR.txt b/src/txt/3DPoolHR.txt new file mode 100644 index 0000000..84e4b33 --- /dev/null +++ b/src/txt/3DPoolHR.txt @@ -0,0 +1,3 @@ +3D Pool HR + +Winner -> #*9*9 \ No newline at end of file diff --git a/src/txt/DangerousDave.txt b/src/txt/DangerousDave.txt new file mode 100644 index 0000000..3f891cc --- /dev/null +++ b/src/txt/DangerousDave.txt @@ -0,0 +1,3 @@ +Dangerous Dave + + - pjin9 \ No newline at end of file diff --git a/src/txt/Exit.txt b/src/txt/Exit.txt new file mode 100644 index 0000000..6d71358 --- /dev/null +++ b/src/txt/Exit.txt @@ -0,0 +1,15 @@ + Java ! + +Age Racers (EA) - 2009 . +Iron Man 2 (GameLoft SA) - 2010 . +Sexy Poker 2009 (GameLoft SA) - 2/3 2009 . +Real Football 2010 - / 2009 . +Tom Clancys's Splinter Cell - Conviction - / 2009 . +Need For Speed : Shift (EA) - 2009 . +PES 2010 - 2009 . +Nitro Street Racing 2 (GameLoft) 2009 . +Duna: Battle For Arakis (GLU) - - 2009 . +Assassin's Creed 2 (GameLoft) - 2009 . + 2009: , , - / 2009 . + + \ No newline at end of file diff --git a/src/txt/Gradonus.txt b/src/txt/Gradonus.txt new file mode 100644 index 0000000..70e00a6 --- /dev/null +++ b/src/txt/Gradonus.txt @@ -0,0 +1,6 @@ +Gradonus + + - Options, Cheat Codes + + -> kisember-fullhitpoint + -> kisember-onemissilekill \ No newline at end of file diff --git a/src/txt/MeteosAstroBlocks.txt b/src/txt/MeteosAstroBlocks.txt new file mode 100644 index 0000000..bcc16ba --- /dev/null +++ b/src/txt/MeteosAstroBlocks.txt @@ -0,0 +1,4 @@ +Meteos: Astro Blocks + + -> #946 + -> #473 \ No newline at end of file diff --git a/src/txt/No.txt b/src/txt/No.txt new file mode 100644 index 0000000..9693b72 --- /dev/null +++ b/src/txt/No.txt @@ -0,0 +1 @@ + ! \ No newline at end of file diff --git a/src/txt/about.txt b/src/txt/about.txt new file mode 100644 index 0000000..4894340 --- /dev/null +++ b/src/txt/about.txt @@ -0,0 +1,20 @@ + #white Java@ + +#white #white aNMPWR + +#white : #white aNNiMON + +#white : #white "PuRe" + +#white : #white "" + - "ks15" + +#white : #white "RGT" , {DeadHead}, "Wally" , N0th1ng , Smoker1 , "D@nik" . + +#white : #white aka "MasterMiha" + +#white Wap : #white And7ei, Lpzhelud, PuRe + +#white : +#white : pure@java-mania.ru + : Postel@wapalta.mobi \ No newline at end of file diff --git a/src/txt/aoh.txt b/src/txt/aoh.txt new file mode 100644 index 0000000..0dae923 --- /dev/null +++ b/src/txt/aoh.txt @@ -0,0 +1,34 @@ +Привет всем! Наша редакция решила впервые провести викторину на страницах нашего журнала! Викторина будет посвящена серии игр Аgе оf Неrоеs, приз за первое место - семизнак аськи, второе место - восьмизнак. +Итак, правила таковы : есть 30 вопросов, каждый вопрос - 1 балл. Ответы на вопросы вы можете присылать или в личку Рurе (или Ярэп'у), или на е-mаil. Викторина будет проходить до конца сентября. Затем мы подведем итоги, сосчитаем баллы, и обьявим результаты в 4 номере журнала. Ответы нужно присылать в форме : 1) ответ 2) ответ , и т.д. +Вот вопросы : +1) Имя гл. героя в АоН6. +2) Как звали бога орков в АоН3? +3) Из каких частей состоял доспех Хара? +4) Для чего нужен плод дерева висельников в АоН4? +5) За кем охотилась Бьянка? +6) Как звали "древнего" в АоН4? +7) Как зовут эльфа в АоН3, который, по словам Воледара, начал войну? +8) Как зовут дочь Хара? +9) Как назывался город людей в АоН5? +10) Охранник Тиалин в АоН4. +11) Хранитель ключей от врат в АоН2. +12) Название башни, охраняющей Радужную долину. +13) Сколько дней нужно охранять Совет Шаманов от эльфов? +14) Как получить нагрудник Хара? +15) За какую расу мы играем в АоН2? +16) Место обитания богов. +17) Имя сержанта Ракгула. +18) Имя предводителя гоблинов. +19) Сколько всего богов в Пантеоне? +20) Из каких частей состоит печать алхимика в АоН6? +21) Имя человека, похитившего эликсир молодости в АоН6. +22) Назовите имя военачальника эльфов в АоН3. +23) Что нужно сделать в АоН2, чтобы получить ключ Сторка? +24) Назовите имена тех, кто отправился с вами в последний путь в АоН4. +25) Что просит найти древний в АоН4? +26) За кого мы играем в АоН3 (имя) ? +27) Что нужно найти для волшебника в АоН1, чтобы он перенёс нас к замку Князя Тьмы? +28) Сколько ВСЕГО игр в СЕРИИ АоН? +29) Локация гномов в АоН5. +30) Сколько локаций в АоН6? +Р.S. При совпадении балов, победителем считается тот, кто прислал ответы раньше. Всем удачи! :) \ No newline at end of file diff --git a/src/txt/basic.txt b/src/txt/basic.txt new file mode 100644 index 0000000..194babd --- /dev/null +++ b/src/txt/basic.txt @@ -0,0 +1,1513 @@ + "" + -=MobileBasic=- + + "MobileBasic 1.8" ( ). .!!! + +1. + + . + !!! + + +DIR - +EDIT L% - L% +LIST [L1%[,L2%]] - ; L1%, ; , L1%-L2% +NEW - +RUN - +INPUT "...",( /%/$) - , "..."-, ( /%/$)- +PRINT ( /%/$) - ( /%/$), +GOTO L% - L% +IF <1> THEN <2> - , <1> - , <2> - , . +: IF A<5 THEN GOTO 50 +FOR P%=1% TO 2% [STEP 3%] | NEXT P% - . P% - , 1% - , 2% - , 3% - ( 1).FOR/TO/STEP - , NEXT - +DEG - ( ) +RAD - +SLEEP MS% - +STOP - +END - +BYE - +REM - +TRAP L% - L% + + +DELETE "..." - / +LIST "..." - +ENTER "..." - (), +SAVE "..." - ( ) +LOAD "..." - , , + + , +DATA ... - (, ). . +: 90 DATA 65,3.0,LOAD,2.2E+2 +READ ... - , DATA. +: READ A%,F,K$,E +RESTORE L% - L% +DIM ( /%/$)(N%) - N%. + DIM A%(50) +GOSUB L% - L% +RETURN - GOSUB +POP - RETURN + + +CLS - +SETCOLOR R%,G%,B% - RGB ( 0 - 255) +PLOT X%,Y% - (x;y) +BLIT X1%,Y1%,W%,H%,X2%,Y2% - (x1;y1), (w), (h) (x2;y2) ( ) +DRAWLINE X1%,Y1%,X2%,Y2% - (x1;y1) - (x2;y2) +DRAWRECT X%,Y%,W%,H% - () (x;y) (w) (h) +DRAWARC X%,Y%,W%,H%,SA%,A% - ( ) (y), (x), (h), (w), + (sa), (a), , , +DRAWROUNDRECT X%,Y%,W%,H%,A_W%,A_H% - DRAWRECT, , (a_h) (a_w) +DRAWSTRING STRING$,X%,Y% - (string) (x;y) +FILLRECT X%,Y%,W%,H% - DRAWRECT, +FILLARC X%,Y%,W%,H%,SA%,A% - DRAWARC, (.. ) +FILLROUNDRECT X%,Y%,W%,H%,A_W%,A_H% - DRAWROUNDRECT, + + +GELLOAD Gel$,Resourse$ - ( ) - . : +gelload "ball","ball.gif" +GELGRAB Gel$,X%,Y%,W%,H% - "" (x,y,w,h) +DRAWGEL Gel$,X%,Y% - (x,y); , +SPRITEGEL Sprite$,Gel$ - +SPRITEMOVE Sprite$,X%,Y% - drawgel + + +OPEN #ch%,file$,mode$ - - (file) (ch). 10: 0 9. . (mode) - ("output") ("input"). , , , dir, readdir +CLOSE #ch% - +GET #ch%,b% - +PUT #ch%,b% - +INPUT #ch%,( /%/$) - (, ) +PRINT #ch%,( /%/$) - +NOTE #ch%,c% - / +POINT #ch%,c% - . , + + + + . +ABS(X) - |x| +SQR(X) - x^0.5 +RND(0) - (32b) +LOG(X) - ln x +EXP(X) - e^x +MOD(A,B) - a/b +SIN(A) - sin a +COS(A) - cos a +TAN(A) - tg a +ASIN(X) - arcsin x +ACOS(X) - arccos x +ATAN(X) - arctg x + + +LEN(S$) - s +MID$(S$,S%,L%) - s, s l +LEFT$(S$,L%) - "", l +RIGHT$(S$,L%) - "", l +STR$(N) - n +VAL(S$) - s +CHR$(N%) - n Utf +ASC(S$) - s + + +DAYS(0) - , , D% +MILLISECONDS(0) - , M% +MILLISECOND(D%,M%) - Days(0) Milliseconds(0) +SECOND(D%,M%) - +MINUTE(D%,M%) - +HOUR(D%,M%) - +DAY(D%,M%) - +MONTH(D%,M%) - +YEAR(D%,M%) - + + + , +LEFT(0) - [4], +RIGHT(0) - [6], +UP(0) - [2], +DOWN(0) - [8], +FIRE(0) - [5], , . . +GAMEA(0) - [1] +GAMEB(0) - [3] +GAMEC(0) - [7] +GAMED(0) - [9] + + . +FRE(M%) - : + m%:0-. + 1-. + 2- + 3-. + 4-. +ERR(0) - +READDIR$(M$) - : + , , , "". : "c*","*.txt","w*.dat" +PROPERTY$(M$) - ( ): +microedition.model +microedition.profile +microedition.configuration +microedition.locale +microedition.encoding + + +SCREENWIDTH(0) - +SCREENHEIGHT(0) - +STRINGWIDTH(S$) - +STRINGHEIGHT(S$) - +GELWIDTH(G$) - . . +GELHEIGHT(G$) - . . +( ) +NUMCOLORS(0) - , +ISCOLOR(0) - , SETCOLOR R%,G%,B% , 1, - 0 +SPRITEHIT(S1$,S2$) - - 1, - 0 + + + +T$ - +O$ - "" +C$ - "" +L$ - +MESSAGEFORM(T$,O$,C$,L$,M$): + . + 1 - "", -1 "". +M$ - . +EDITFORM(T$,O$,C$,L$,V$,L%,M%) + . +: len(V$) - "", -1 - "" +V$ - +L% - +M% - : + 0 - + 1 - + 2 - + 3 - e-mail + 4 - + 5 - url +CHOICEFORM(T$,O$,C$,L$,A$,M%) +. +: N - "", -1 - "" +A$ - +M% - : + 0 - + 1 - +GAUGEFORM(T$,O$,C$,L$,M%,S%,M%) + . +: N - "", -1 - "" +M% - +S% - . +M% - : + 0 - + 1 - +DATEFORM(T$,O$,C$,L$,A%,M%) + +: 1 - "", -1 - "" +A% - +M% - : + 0 - + 1 - + 2 - +A%(0)=MS% +A%(1)=D% + + + , . . + +2. " " + + . + + , . "run" +: +10 cls +20 print "" +run + .(10,20,30...) , . + + 1. + +10 cls +20 print "" +30 end +run + + : +10 cls - +20 print ""- "" +30 end- + +( , "") + + print . ( ) + . + , "%". +: +a%,x%,raketa%,1% + () + ! +- , "$" +: +$,word$,1$ + + . + + +: +x,y,fack + + (1.95 0.5) + + ? . % "5". : + +%=5 + + $ "", : + +$="" + + , "3.14" + +=3.14 + + + + 2. + +10 cls +20 s$="" +30 print s$ +40 end + + +10 cls - +20 s$=""- o s$ "" +30 print s$- +40 end- + +( , "") + + : + +10 cls +20 h%=1985 +30 print h% + +. . 2+2 + + 2+2? + : + +10 cls +20 %=2 +30 b%=2 +40 %=%+b% +50 print % +60 end + + .? + + %=2, ? ! + + : + +input "",% + +: +10 cls +20 input " ",g% +30 print g% +40 end + +10 cls- , +20 input " ",g%- g% +30 print g% - +40 + end ( ) + + . .( ) + 0 100 + +: +%=50+mod(rnd(0),50) +: +%- () +50 - +md- +rnd(0)- + 50? 0 100. +50+50=100 +50-50=0 + + + 0 150 + +%=75+mod(rnd(0),75) + + , ! + + : + , +(fire%,Fire%,FIRE% FiRe%- ) + + !!! + + ! + +3. " " + + ""? + , +if "" then " " + + : + "" " " + + : + + " " "" + + : + +if %=5 then %=0 + + : + +if %>0 then print "--!!!" + + "and" + +: +if %>5 and %<10 then print "" + +: + % 5 % 10 + % 6,7,8,9 (%=1,2, 20,100) + + . + + : +10 cls +20 pas%=1742 +30 input " ",p% +40 if p%=pas% then print " " + + : +10 cls-? + +20 pas%=1742- pas% 1742( ) + +30 input " ",p%- p% + +40 if p%=pas% then print " " + p%( )=pas%(1742) " " + + ? + "1742" - 20 + + . + ? ( ) . . . + + ? + + , . + + : + goto + + : + +10 cls +20 %=0 +30 %=%+1 +40 print % +50 goto 30 + +: +10 cls +20 %=0- % 0 + +30 %=%+1 % 1 + +40 print % +50 goto 30 30 + + goto + + : + +10 cls +20 input " ",% +30 if %=3 then goto 60 +40 print " " +50 goto 10 +60 print " !!!" + +: + +10 cls +20 input " ",%- % + +30 if %=3 then goto 60 + 3 60 + +40 print " " + + +50 goto 10 ( 10) +60 print " !!!" + + "3" + + goto . + + + + : + +for i%=0 to % +next i% +: +For i%=0- +to %- +( ) + +% + +for i%=0 to 20 + + ? + + +10 cls +15 %=0 +20 for i%=0 to 5 +30 %=%+1 +40 print % +50 next i% + +: +10 cls +15 %=0 +20 for i%=0 to 5 - ( 5 ) + +30 %=%+1 +40 print % +50 next i% - 30 + + : + , . . + + : + . + + : + +1 0 10 +2 +3 +4 + + : + +10 cls +20 nomer%=5+mod(rnd(0),5) +30 input " ",you% +40 if you%=nomer% then print " ":goto 10 +50 print " " +60 goto 20 + + 6 . + , . ":" + : + + +10 cls +20 %=2 +30 b%=2 +40 %=%+b% +50 print % +60 end + + +10 cls:%=2:b%=2:%=%+b%:print %:end + + + . + +4. "" + + - . . + +fire(0)- "5"( ) + +up(0) - "2" ( ) + +down(0)- "8" ( ) + +right(0)- "4"( ) + +left(0) -"6" () + + + + + +"1","3","7","9" + + ? 1, 3, 7, 9 . + + + + + +if fire(0) then ..... + + 5 . + +: + +if fire(0) then goto 50 + + + +if fire(0) then print % + + .? + + + +if left(0) then goto 150 + + 5. "" + + - , . + + . + . + + . + + + +plot %,% + +plot- + +%- +%- + + % % + + 20,50 +( 20 , 50 ) + + + +10 cls +20 %=20 +30 %=50 +40 plot %,% + + . + +10 cls +20 %=50 +30 %=0 +40 %=%+1 +50 plot %,% +60 goto 40 + +: +10 cls + +20 %=50 ( 50 ) + +30 %=0 ( 0 , .. ) + +40 %=%+1 ( ) + +50 plot %,% ( ) + +60 goto 40 ( 40, ) + + . : + +setcolor r%,g%,b% + +setcolor- + +r%- + +g%- + +b%- + + 0 255 + + + +setcolor 255,255,255 + + : + +setcolor 0,0,0 + + +setcolor 0,0,255 + + +setcolor 0,255,0 + + +setcolor 255,0,0 + + +setcolor 255,255,0 + + . + + 50,50) + +10 cls +20 %=50 +30 %=50 +40 setcolor 255,0,0 +50 plot %,% + + + +10 cls +20 r%=0 +30 %=50 +40 %=50 +50 r%=r%+1 +60 setcolor r%,0,0 +70 plot %,% +80 if r%>255 then r%=0 +90 goto 50 + + + +10 cls +20 r%=0 0 +30 %=50 +40 %=50 +50 r%=r%+1 1 + + +60 setcolor r%,0,0 + + +70 plot %,% + +80 if r%>255 then r%=0 255 + +90 goto 50 50 + + ! . + + drawline + +drawline %,%,1%,1% + + % % , 1% 1% + + +10 cls +20 %=0 +30 %=50 +40 1%=100 +50 1%=50 +60 drawline %,%,1%,1% + + () + +drawrect %,%,w%,h% + + % % , w%- h%- + +10 cls +20 %=10:%=10:w%=100:h%=50 + +30 drawrect %,%,w%,h% + + + +fillrect %,%,w%,h% + + . + , , . + : +1. +2. setcolor +3. fillrect +4. goto + + : +10 cls +20 x%=64+mod(rnd(0),64) +30 y%=80+mod(rnd(0),80) +40 w%=50+mod(rnd(0),50) +50 h%=50+mod(rnd(0),50) + +60 r%=125+mod(rnd(0),125) + +70 g%=125+mod(rnd(0),125) + +80 b%=125+mod(rnd(0),125) + +85 setcolor r%,g%,b% + +90 fillrect x%,y%,w%,h% + +100 goto 20 + : + + drawstring + + print . print , , . + drawstring . + +drawstring s$,%,% + +s$ - +% % + +10 cls +20 input " ",$ +24 %=10:%=60 + +30 drawstring $,%,% + + + +10 cls +20 drawstring "",30,90 + + + +10 cls +20 setcolor 255,0,0 +30 drawstring "",30,20 + + " " . , . . + + : +1 dol%=500 + +2 setcolor 0,0,0 + +5 fillrect 0,0,200,200 + +10 setcolor 255,255,0 + +20 drawstring " "+str$(dol%),30,40 + +25 drawstring " ",10,60 +30 input "",stavka% +32 setcolor 0,0,0 +33 fillrect 0,0,200,200 +35 setcolor 150,150,150 +36 drawstring " 0-10",0,50 +40 input "",a% +50 d%=5+mod(rnd(0),5) + +60 if a%=d% then goto 100 +70 setcolor 0,0,0 +71 fillrect 0,0,200,200 +72 setcolor 255,0,0 +73 drawstring " ",10,90 +75 sleep 1000 +80 dol%=dol%-stavka% +85 if dol%<0 then goto 200 + +90 goto 2 +100 setcolor 255,255,255 +101 drawstring "",20,90 +110 sleep 1000 +115 o%=stavka%*2 +120 dol%=dol%+o% +130 goto 2 + +200 setcolor 0,0,0 +210 fillrect 0,0,200,200 +220 drawstring "GAME OVER",30,90 +230 if fire(0) then goto 1 +240 goto 230 + + ! + + . sleep str$ +Sleep - , . + +sleep 1000- 1 + +sleep 500 + + . + sleep , , . + +str$- . , . + -$ -%, drawstring- , + +drawstring $,0,0 + + +drawstring %,0,0 . str$ + + +drawstring str$(%),0,0 + + ? + + . + "" ( ) . ? ! jar . + GeL: + + , . . + +gelload "1","2" + +1- . + +2- . + + strela.gif, "" + : + +gelload "","strel.gif" + + . ? + +drawgel "",%,% + +% %- . + + . + +10 gelload "","strel.gif" +20 drawgel "",%,% + + . ? . + +: +1. cls. +2. ( ) . +3 .( ) + + sprite + + , . + +spritegel "1","2" + +1- . + +2- + + + +spritemove "",%,% + +% %- + +- + + : + +10 gelload "","imge.gif" +20 spritegel "","" +30 spritemove "",50,50 + + + +10 gelload "","imge.gif" +20 spritegel "","" +30 spritemove "",50,50 + + spritehit. . + + . "", "". . + : +if spritehit("","") then --- + + + +10 gelload "x","f16.gif" +20 gelload "y","enemy.gif" +30 spritegel "x","x" +40 spritegel "y","y" +50 spritemove "x",x%,x1% +60 spritemove "y",y%,y1% +70 if spritehit("","") then goto 1000 + + . + + ! . +: + +10 cls +20 $="rket" +30 b$="rket.gif" +40 gelload $,b$ + + ? + , . +: + +10 cls +20 gelload "f1","f1.jpg" +30 x%=64: y%=100 +40 spritegel "f1","f1" +50 spritemove "f1" +60 if left(0) then x%=x%-1 +70 if right(0) then x%=x%+1 +80 if up(0) then y%=y%-1 +90 if down(0) then y%=y%+1 +100 goto 50 + +6. " " + + ( ), dt + dt "," + + +dt 1,10,500,7, .. + + red read +: + +read $ % + + : + +10 cls +20 read $ +30 print $ +5000 dat + +: + +10 cls + +20 read $- + +30 print $ + +5000 dat - + + , "" + + : + +10 cls +20 read % +30 print % +5000 dat 50 + +Data ( ). Data , . + + , , ? + +1 gelload "1","1.gif" +2 gelload "2","2.gif" +3 gelload "1","1.gif" + +? 50 ? 50 50 spritegel 50 spritemove ( spritemove- , ) + . "" + data + + "" + +1 CLS +2 INPUT "",G% +3 FOR I%=0 TO G%-1 +4 READ A$ +5 READ B$ +6 GELLOAD A$,B$ +7 SPRITEGEL A$,A$ +8 SPRITEMOVE A$,-200,0 +9 NEXT I% + +1000 DATA x1,x1.gif,x2,x2.gif + +: +1 CLS + +2 INPUT "",G%- + +3 FOR I%=0 TO G%-1- + +4 READ A$ - + +5 READ B$- + +6 GELLOAD A$,B$- + +7 SPRITEGEL A$,A$- + +8 SPRITEMOVE A$,-200,0 - + +9 NEXT I% - + +1000 DATA x1,x1.gif,x2,x2.gif-. + . + . + ! +: + + 1000 DATA x1,x1.gif,x2,x2.gif,x3,x3.gif,n1,n1.gif,n2,n2.gif,n3,n3.gif,n4,n4.gif,n5,n5.gif,r1,r1.gif,r2,r2.gif,r3,r3.gif,r4,r4.gif,rs1,rs1.gif,rs2,rs2.gif +1001 DATA d,d.gif,n,n.gif,a1,a1.gif,a2,a2.gif,a3,a3.gif,br1,br1.gif,br2,br2.gif,b1,b1.gif,b2,b2.gif,b3,b3.gif + +7. "" + + . . ? ? . , dim. + +dim %(5) + +%- +(5)- + + : + +10 cls +20 dim %(3) +30 %(0)=50 +40 %(1)=100 +50 %(2)=6 + +: + +10 cls + +20 dim %(3)- % + + + +30 %(0)=50 - + +40 %(1)=100- + +50 %(2)=6- + + ? , . 10 , : + +1 plot %,% +2 plot %,b% +3 plot c%,% +4 plot %,n% +5 .... +6 .... +7 .. + + . + 20 + + : + +1 cls +2 dim x%(20) +3 for i%=0 to 19 +4 read a% +5 x%(i%)=a% +6 next i% +7 for i%=0 to 19 +8 plot x%(i%),50 +9 next i% + +100 data 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,35,40,42,60,100 + +: + +1 cls + +2 dim x%(20) % + +3 for i%=0 to 19- + +4 read a%- + +5 x%(i%)=a% % 4. + %(i%), (i%) i% 0 19. %(0),%(1) 19 + +6 next i% + +7 for i%=0 to 19 + +8 plot x%(i%),50 %(i%),50 + +9 next i% + +100 data 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,35,40,42,60,100- % + + 20 + + . , , ! + + : + "" +10 cls +20 dim x%(10) +30 dim y%(10) +40 r%=0:g%=0:b%=0 +50 setcolor r%,g%,b% +60 fillrect 0,0,200,200 +70 for i%=0 to 9 +80 x%(i%)=64+mod(rnd(0),64) +90 y%(i%)=20+mod(rnd(0),20) +100 next i% + +110 for i%=0 to 9 +120 y%(i%)=y%(i%)+1 +135 if g%>255 then g%=0 +140 setcolor 0,g%,0 +150 plot x%(i%),y%(i%) +160 if y%(i%)>176 then goto 70 +170 next i% +175 g%=g%+1 +180 goto 110 + +8. "" + + . . ! . ? , . . . , , . . . MobileBasic . ( ). + ? . : + +10 d%=days(0) +20 m%=milliseconds(0) + + . . + +h%=hour(d%,m%) + +mi%=minute(d%,m%) + +s%=second(d%,m%) + + : + +drawstring str$(h%)+":"+str$(mi%)+":"+str$(s%),30,50 + + : + +1 cls +2 d%=days(0) +3 m%=milliseconds(0) +4 h%=hour(d%,m%) +5 mi%=minute(d%,m%) + +6 s%=second(d%,m%) + +7 cls:drawstring str$(h%)+":"+str$(mi%)+":"+str$(s%),30,50 + +8 sleep 50 + +9 goto 2 + +9. " " + + . messageform. +messageform . , SMS. +: +X%=massageform(t$,o$,c$,l$,m$) + +t$- +o$- "" +c$- "" +l$- +m$- . + + : + +10 cls +20 input "",$ +30 %=messageform("","","","",$) + + , . . + + editform. +editform . SMS. + +%=editform(t$,o$,c$,l$,$,%,%) + +t$- +o$- "" +c$- "" +l$- +$- +%- +%- + 0 - + 1 - + 2 - + 3 - e-mail + 4 - + 5 - url + + : + +10 cls +20 w%=editform("","","","",v$,200,0) + + messageform + + : +10 cls +20 w%=editform("","","","",v$,200,0) +30 %=messageform("","","","",v$) + + + +choiceform(T$,O$,C$,L$,A$,M%) + +t$- +o$- "" +c$- "" +l$- +$- +M%-: +0 - +1 - + + . +: + +10 cls +20 dim a$(3) +30 a$(0)="Start" +40 a$(1)="Options" +50 a$(2)="Exit" +60 x%=choiceform("Game","Ok","Cancel","menu",A$,0) + + . ? ! + +10 cls +20 dim a$(3) +30 a$(0)="Start" +40 a$(1)="Options" +50 a$(2)="Exit" +60 x%=choiceform("Game","Ok","Cancel","menu",A$,0) + +70 if x%=0 then print "Start" +80 if x%=1 then print "options" +90 if x%=2 then print "exit" + + , x%=-1 + +10 cls +20 dim a$(3) +30 a$(0)="Start" +40 a$(1)="Options" +50 a$(2)="Exit" +60 x%=choiceform("Game","Ok","Cancel","menu",A$,0) + +70 if x%=0 then print "Start" +80 if x%=1 then print "options" +90 if x%=2 then print "exit" +100 if %=-1 then goto 60 + +$9 " " + + , , . . + screenwidth(0) screenheight(0) . + +w%=screenwidth(0)- +h%=screenheight(0)- + + : . + +10 cls +20 setcolor 0,0,0 +30 w%=screenwidth(0) +40 h%=screenheight(0) +50 fillrect 0,0,w%,h% +60 goto 60 + + + . + +10 cls +20 setcolor 0,0,0 +30 w%=screenwidth(0) +40 h%=screenheight(0) +50 fillrect 0,0,w%,h% +60 setcolor 255,255,255 +70 plot w%/2,h%/2 +80 goto 80 + +/- . + + . + + ( ). . +X%=stringwidth(s$)- + +Y%=stringheight(s$)- +(s$)- + + + +x%=gelwidth(g$) +y%=gelheight(g$) + +g$- + +10. " " + + +Open #h,name$,mode$ + +#ch- . 10.( 0 9) + +name$- + +mode$- , input () + output () + +: + +Open #1,"proga","input" + +Close #1- + + + + Example.dat (.. RMS MobileBASIC ) A%, VALUE, Z$ + +10 A%=26:VALUE=-2.076:Z$="MobileBASIC" +20 OPEN #1,"Example.dat","OUTPUT" +30 PRINT #1,A% +40 PRINT #1,VALUE +50 PRINT #1,Z$ +60 CLOSE #1 +70 CLS:PRINT "Saved File:" +80 PRINT "Example.dat" +90 END + + Example.dat , dat , . + 20: + Example.dat ("OUTPUT") 1: #1. ( 0,1,..,9) , , ( ). , . + 30-50: + . + 60: + . + 70-90: + ( 90 ) + + 2. + , ( ), . + +10 NAME$="Example.dat" +20 OPEN #8,NAME$,"INPUT" +30 INPUT #8,INTEGER% +40 INPUT #8,FLOAT +50 INPUT #8,STRING$ +60 CLOSE #8 +70 CLS:PRINT "Integral Value:":PRINT INTEGER% +80 PRINT "Floating Value:":PRINT FLOAT +90 PRINT "String Value:":PRINT STRING$ +100 PRINT " ":PRINT "Done" + + 20: + 8 + 30-50: + + 60: + + 70-90: + + 100: + + + 3. + ( RMS, Dzaniss- ) + +10 CLS:PRINT "Wait..":NAME$="tchaikovsky.mid":MKB23$="http://mkb23.mag.su/" +20 TRAP 60:V$="":N$=CHR$(10) +30 OPEN #0,MKB23$+NAME$,"INPUT" +40 GET #0,B% +50 V$=V$+CHR$(B%):GOTO 40 +60 CLOSE #0 +70 OPEN #0,NAME$,"OUTPUT" +80 FOR I%=1 TO LEN(V$) +90 B$=MID$(V$,I%,1) +100 PUT #0,ASC(B$) +110 NEXT I% +120 CLOSE #0 +130 CLS:PRINT "Loaded File:":+N$+MKB23$+NAME$ +140 PRINT "Saved As:":+N$+NAME$ + + 30 +, , , ( mid- "" .., 5 kB). + 40: + GET 1 B%. + + 50: + V$ + + 60: + 40-50 . ? , "" GET . , 20 60: +TRAP 60 + . . . + + 70-120: + . V$ , (.. ) . PUT. : V$ , , 1? PRINT #0,V$ ! + , , , , . V$ , - . . 1:1. + . . (.. ) . , . + + 4. + V$ . +10 LINES%=20:V$="":CLS +20 INPUT "FILE NAME? > ",NAME$ +30 IF NAME$="" THEN CLS:END +40 NAME$=READDIR$(NAME$):IF NAME$="" THEN PRINT "NOT FOUND":GOTO 20 +50 CLS:PRINT NAME$:PRINT "Wait..." +60 FOR I%=1 TO LINES%:V$=V$+">"+CHR$(10):NEXT I% +70 OPEN #1,NAME$,"INPUT" +80 POINT #1,-1 +90 NOTE #1,SIZE% +100 FOR I%=0 TO SIZE%-1 +110 POINT #1,I% +120 GET #1,B% +130 V$=V$+CHR$(B%) +140 NEXT I% +150 CLOSE #1 +160 CLS:PRINT V$:END + + 40 . NAME$ , READDIR$(NAME$), . 70 . POINT . , . , , , , .. . , . , +80 POINT #1,-1 +90 NOTE #1,SIZE% + ( ). 100-150 , , V$. , POINT . , , , , . + , , , +txt,wml,htm,html,jad,imy,url,vcs MobileBASIC , LIST. + +11. "" + + . + + ext edio 0:/. . + +enter "file:///0:/ " run + + save " " + list " " + + . + +$12. " " + + + +1. Zip-. +2. . +3. . + + Sie FM. + +------------------ + + ! + . + + Gameplay.Wen.ru . + + . + + + : Dou Hammett \ No newline at end of file diff --git a/src/txt/cap.txt b/src/txt/cap.txt new file mode 100644 index 0000000..f8a10b1 --- /dev/null +++ b/src/txt/cap.txt @@ -0,0 +1,42 @@ +Название : Captаin Gаlасtiс : Supеr Spасе Неrо +Жанр : аркада +Разраб : Digitаl Сhосоlаtе +Релиз : август 2009 +img/res/c1.png + + + + + + + + + + + + +Digital Chocolate выпустила в свет нового героя, хотя множество разработчиков строят игру вокруг всем известного героя, вспомните того-же Человека-Паука или Соника. +И это- проблема - они выпускают игры вокруг характера (торговой марки), а не наоборот пытаются создать нового персонажа. Digitаl Сhосоlаtе приняли намного более разумный подход с Captain Galactic- они имели блестящую идею для игры и изобрели героя, чтобы соответствовать. +Первичная способность капитана- межпланетный полет, хотя он зависит от гравитационных полномочий. Вы начинаете каждый уровень, создавая полет при управлении(беге) вокруг крошечного астероида, с которого Вы начинаете. Зажимание и поддержание кнопки "2" посылают Вас в орбиту, где Вы можете собрать монеты,которые кто-то небрежно оставил. В космосе вас подстерегает множетво противников. Если не будет ничего иного как облететь их, то наш герой прилетит назад к земле в сильном рывке и совершит нападение, разрушая любых злодеев и даже, в некоторых случаях, повреждая планету непосредственно. +Именно, когда есть другая планета в пределах диапазона, вещи становятся интересными. Что можно сказать о графике? Она не идеальна, когда я скачал родную версию для 176х220 я ужаснулся! Да, на небольших экранах графика оставляет желать лучшего, после версии для 320х240 размером в 1.6 мб, которую я скачал раньше родной играть в эту стало не солидно. Из плюсов стоит отметить что DC выпускают мультиэкранные игры и версия от 320х240 пошла у меня как родная. Спецэффекты в 1.6мб версии просто супер, чего только стоит удар с разгона в планету или боссы. +img/res/c2.jpg + + + + + + + + + + + + +Поэтому лучше играть в наибольшую по весу версию. Звуки в игра на высоком уровне, они соотвествуют сюжету и передают атмосферу игры. Captain Galactic выглядит как традиционный платформер, только со строго зажатыми в тиски средствами управления. +В целом, Галактический Капитан из-за непривычной для ява физики, инерции с полетами к которым присоединяется типично превосходное исполнение Digital Chocolate, делает его одной из самых новых мобильных игр в которые стоит поиграть. некоторое время. +Графика : 9 +Геймплей : 7 +Музыка 10 +Управление : 5 +Общая оценка : 7 +Автор статьи: D@nick \ No newline at end of file diff --git a/src/txt/cheats.txt b/src/txt/cheats.txt new file mode 100644 index 0000000..4d6b774 --- /dev/null +++ b/src/txt/cheats.txt @@ -0,0 +1 @@ + , , , java , e-mail : mokushev.evgeniy@rambler.ru \ No newline at end of file diff --git a/src/txt/cobra.txt b/src/txt/cobra.txt new file mode 100644 index 0000000..9feeed0 --- /dev/null +++ b/src/txt/cobra.txt @@ -0,0 +1,13 @@ +Игра-G.I.Joe The Rise of Cobra +Разработчик-EА +Дата релиза-июль 2009 года. +Игра по мотиву фильма-обречение на крах? +Когда пришло известие,что компания ЕА выпустила игру по мотивам фильма 'Rise of Cobra' я всерьез призадумался,вспомнив о том,что игры по фильмам обычно получаются либо недосказанными(пропущено море сюжетных эпизодов) либо такими,какие вообще качать не хочется.К тому же в памяти был печальный пример игры 'Люди Х:Росомаха',когда к ужасной графике добавился и ужасный игровой процесс.Но я знал,что ЕА не станет терять свою репутацию,заработанную столь тяжёлым трудом и постарается выпустить игру,что называется 'максимально приближенную к аналогу,т.е к фильму'.Но забегая вперёд скажу,что потратил траф на игру зря... Но расскажу обо всём по порядку:Начав игру,мне сразу в голову пришла мысль-о боже,неужели в нашем нынешнем 2009 году ещё возможна столь ужасная графика?Ужаснейшие текстуры,нечётко прорисованные персонажи...Кстати о персонажах,их три-щепетильный и тщедушный с виду человек по грозному кличке 'Duke',здоровенный камрад афроамериканской наружности 'Ripcord' и милая девушка 'Scarllet'.Так о чём это я?Ах да,о графике,такое ощущение,что разработчики работали над ней в спешке,будто забыли дома включенный утюг.Гг.Но всем известно что немаловажной частью хорошей игры является геймплей.Здесь он хорош,нам предстоит вдоволь побегать,попрыгать,посносить бошки надоедливым роботам и в конце доходим в боссов.Хочется отметить,что игра показалась мне необычайно тяжелой.Чего только стоила мне миссия 'Tanker' на которую я потратил немного немало целую ночь(для сравнения-экшн от Лофта как раз и проходятся за одну ночь)Также стоит отметить интересную фишку,придуманую ЕА:начав уровень одним героем мы имеем возможность закончить этот уровень уже совсем другим персом.А вот с оружием разрабы явно поскупились-всего 3 вида,не правда ли скупо?Кстати о вооружении-игра во многом строится на самовостанавливающей функции нашего костюма.Кстати,я так и не понял,почему так медленно ходят наши персы?Не из-за многокилограммовой амуниции ли?Правда имеется возможность ускорения,нажав дважды кнопку движения.В остальном в управлении всё стандартно,единственное,что не понравилось,так это неналичие прыжков по диагонали,а так все норм.При попадании в нас вражеских снарядов наш перс страдальчески вскрикивает.Кстати в опциях мелодию можно оставить,или тока сделать звуковые эффекты,по вашему желанию. +ЕА сделал в принципе неплохую игру,но явно недоработанную.В неё можно поиграть вечером от скуки,не более... +Общая оценка игры: +Графика-5 баллов +Управление-7 баллов +Геймплей-7 баллов +Звук-6 баллов +Общий балл-7. +Автор статьи-Максим Maks15 Машин. \ No newline at end of file diff --git a/src/txt/cops.txt b/src/txt/cops.txt new file mode 100644 index 0000000..6650fc2 --- /dev/null +++ b/src/txt/cops.txt @@ -0,0 +1,14 @@ +Игра-Cops LA Police. +Разработчик-Gameloft SA. +Дата релиза-июль 2009 год. +Узнав новость,что Gameloft собирается выпустить игру 'полицейской' тематики я с горечью подумал,что наверняка будет ощущаться недостаток драйва,т.к наверняка наш коп не сможет палить в прохожих и совершать не вполне законные поступки.Этого в игре и не оказалось,но забегаю вперед скажу вам,дорогие читатели,что и без этого игра получилась на редкость забойной.Но давайте систематизируем мои мысли и расскажем обо всём по порядку... +Лос-Анжелес...В этом городе царит преступность...И тут в напарники к опытному полицейскому Дереку Тёрнеру приходит молодой салага Марк Перез...Помимо этих двух человек мы имеем в наличие опытного детектива Уильяма Райта и координатора Клер Ли.Сюжетная линия продумана до мелочей,уже с первой миссии нам предстоит гоняться за преступниками,попутно выполняя дополнительные задания,такие как например 'найти кота',поиграть в баскетбол,в бейсбол и т.д. +Из оружия мы имеем пистолет и дробовик,к которым позже добавится электрошокер.По геймплею игра представляет собой хороший экшн с элементами квеста.Выполняя свою работу мы поднимаемся по служебной лестнице и в перспективе можем возглавить полицейское управление Лос-Анжелеса!А вообще разработчики радуют большим набором вкусностей:от надевания наручников на руки мерзавцев до управления штурвалом вертолёта!Особо порадовало то,что наконец то разработчики сделали возможным нелинейное развитие событий!Теперь от ваших дипломатических талантов и умения вести переговоры будет зависеть очень многое,как например в ситуациях с определением преступника из круга подозреваемых!В этой игре сломан стереотип,что полицейские-крутые парни,арестовывающие всех и вся и угоняющие любую тачку для 'службы'.Здесь это обычные люди со своими фобиями.И наконец расскажу о фишке,которая меня несказанно порадовала-при определённом развитии сюжета нам предстоит принять участие в дополнительной миссии-преистории,рассказывающей о преступном прошлом Дерека Тёрнера.Скажу коротко о графике и звуке-с первого взляда видно,что игра выполнена на движке игры Heroes of Sparta,то есть играть нам предстоит в двух плоскостях,очень хорошо прорисованы текстуры,правда улыбнул дизайн квартир-диван,телевизор,ванна и туалет в одной комнате-мило,не правда ли?Со звуком дела обстоят не очень-одна мелодия на уровень,это ли мы ожидали от французкого разработчика?Но для особо привередливых посоветуют отключить его совсем,и играть,не испытывая никакого дискомфорта. +Одним словом этой игрой Gameloft в сотый раз доказал что является лучшим разработчиком мобильных игр. +Оценка игры: +Сюжет-9 баллов +Геймплей-10 баллов +Графика-8 баллов +Звук-7 баллов +Общая оценка игры-9 баллов +Автор статьи-Максим Maks15 Машин. \ No newline at end of file diff --git a/src/txt/cschina.txt b/src/txt/cschina.txt new file mode 100644 index 0000000..18ffef8 --- /dev/null +++ b/src/txt/cschina.txt @@ -0,0 +1,27 @@ +3D Counter Strike China +img/res/cs.png + + + + + + + + + + + + +Великолепное творение от китайских производителей - контер страйк на телефон. Единственный минус игры - китайский язык :) Но впрочем он там и не нужен - и так всё понятно. + +Из плюсов: +- Большой набор оружия (от ножа до AWP и одним загадочным оружием которое я так и не смог купить) + Всё купленное оружие можно носить с собой (гы гы, помоему создатели игры переборщили) +- Большой выбор как брони так и дополнительных вещей (каски, штаны, свитера, ботинки, перчатки (меня всегда поражала китайская фантазия :) )) +- Куча увлекательных миссий (убить всех террористов, обезвредить бомбы, спасти заложников и т.д.) +- Возможность боковой ходьбы кнопками 1 и 3 +- Имеется карта местности (вызывается кнопкой 0) + +Из минусов: +- Вообщем минусов как только китайский язык вроде нету + +Игра действительно на высоте и заслуживает внимания. Моя оценка: 9 + \ No newline at end of file diff --git a/src/txt/diamond.txt b/src/txt/diamond.txt new file mode 100644 index 0000000..fcd3d6b --- /dev/null +++ b/src/txt/diamond.txt @@ -0,0 +1,28 @@ +Название : 3D Diamоnd Fеvеr +Жанр : 3D-аркада +Разраб : NGаmеs +Релиз : конец июля 2009 +img/res/1.gif + + + + + + + + + + + + + +Представляю вам новую игру очень молодой компании NGаmеs (на данный момент выпущены лишь 3 игры, включая 3D Аir Соmbаt и Gоаl 2009). В данной игре мы становимся охотником за алмазами, и чтобы разбогатеть, нам прийдётся спуститься в грубокие шахты на старой вагонетке. К слову отмечу, что вид в игре из этой самой вагонетки. Ну что ж, разберемся, что за фрукт эта компания NGаmеs. Чесно говоря, перед скачиванием я не был уверен в интересности игры, ведь слово Diаmоnd наталкивало на мысли о какой нибудь глупой аркаде или головоломке. Но, любовь к 3D играм и служебный долг обязывали. Первое, что нужно отметить в игре - это ужасную графику. Обьекты и окружение прорисованы очень нечетко, краски сливаются. В общем, я ожидал совсем не такого. Единственный более менее хорошо прорисованый обьект это меню. Но мы же не на меню сюда пришли смотреть! Что ж, пришлось поиграть с тусклой графикой, чтобы иследдовать геймпей игры. +Он тоже не из самых лучших. Сюжета никакого нет. Мы просто будем кататься на нашем "транспорте" по подземельям на протяжении 12 уровней. В игре даже есть 3 босса, они занимают 4, 8, и 12 уровень соответственно. На самом деле гейплей не дышит динамикой. Мы просто ездим, собираем алмазы, стреляем в монстров. Иногда, чтобы развлечься, убиваем боссов. Правда, есть в игре и такая вещь, как развилки. От твоего выбора напрямую будет зависеть, проедешь ли ты дальше, или влетишь в стену. Но карта быстро решает эти вопросы, ведь на ней обозначены все развилки, и не трудно посмотреть, в какую сторону нужно поворачивать. В целом, геймплей такой же скудный, как графика. Немного порадовал звук, но и он далёк от идеала. Во время игры звучат всего 3 не очень длинные мелодии, довольно весёлые, но повторяющиеся на протяжении всей игры. Очень скоро это надоедает, и хочется включить плеер. Я лично так и сделал. +Что касается управления, то оно очень простое. 4,6 - поворот, 2,8 - ускорение/замедление , 5 - стрелять. Вот и всё. +Итог : получилась игра довольно среднего качества. Надеюсь NGаmеs всё исправят в своих будущих играх. +Графика : 4 +Геймплей : 4 +Музыка : 6 +Управление : 10 +Общая оценка : 6 +Автор статьи : Максим "Ярэп" Постельга. \ No newline at end of file diff --git a/src/txt/doom.txt b/src/txt/doom.txt new file mode 100644 index 0000000..394a5a9 --- /dev/null +++ b/src/txt/doom.txt @@ -0,0 +1 @@ + , DOOM 2 RPG! . \ No newline at end of file diff --git a/src/txt/doomrpg2.txt b/src/txt/doomrpg2.txt new file mode 100644 index 0000000..5f28af9 --- /dev/null +++ b/src/txt/doomrpg2.txt @@ -0,0 +1,18 @@ +В конце этого года компания EA Mobile +намерена выпустить продолжение своей +некогда успешной игры Doom RPG. Во +второй части Вы снова оденете форму +бравого десантника и высадитесь на +Марсе, дабы надрать задницы и (или) +иные места инопланетным тварям! Чем +больше будет сражаться игрок (или +выполнять задания), тем больше будет +расти его опыт, и, как следствие, сила и +здоровье. На уровнях можно собирать или +зарабатывать кредитки корпорации UAC, и +потом обменивать их на патроны, аптечки +и другие приятные предметы. Игра Doom 2 +RPG также будет выпущена и для +платформы iPhone/iPod Touch, однако ее +выход по-прежнему неизвестен. +Также вы можете просмотреть трейлер из игры на сайте http://na-predele.wen.ru \ No newline at end of file diff --git a/src/txt/dragon.txt b/src/txt/dragon.txt new file mode 100644 index 0000000..f43c325 --- /dev/null +++ b/src/txt/dragon.txt @@ -0,0 +1,16 @@ +Название : Drаgоn аnd Drасulа 3D +Разработчик : НеrоСrаft +Жанр : 3D Асtiоn/Приключения +Релиз : 2005 +Эта игра является третьей частью серии игр "Дракон и Дракула", и, в отличии от своих предшественников, выполнена в полном 3D. Игра довольно неплохая даже по сегодняшним меркам, что уже говорить про 2005 год! Ведь 2005 год явно не был богат на 3D новинки, в виду недосконального изученния 3D технологий разработчиками игр. Но несмотря на прогресс, в эту игру продолжают играть до сих пор. Что же привлекает к ней геймеров (и хардкорщиков, но об этом позже) ? Конечно же, прежде всего это атмосфера мира Дракона и Дракулы, которой успели проникнутся фанаты этой серии игр в предидущих частях. Задача игры остается та же - управляя драконом, пробратся через все уровни с врагами к коварному Дракуле, и уничтожить супостата (да что ж он никак не умрет то!) . Как и раньше, ваш дракон, по мере прохождения игры будет расти, превратясь к концу игры в большого летающего дракона. Но не всё так просто. На протяжении 15 уровней вам будут мешать его слуги : зомби, рыцари, и летучии мыши. Есле уж зашла тема о сложности, то тут вам предстоит немало попотеть, чтобы пройти игру. Дело в том, что все действия происходят не на земле, а на платформах, которые летают в воздухе. И падать с этих платформ вниз вам предстоит часто. Шаг в сторону - упал, соскользнул с платформы - упал, недопрыгнул до следующей - опять минус жизнь. В общем, на прохождение игры придется потратить немало нервов. Но зато, пройдя игру, будет чем гордится! +Но вернемся к самой игре. Как я говорил, нам предстоит путешествовать по 15 уровням в трех мирах (лес, вулкан, кладбище). Платформы в игре тоже разные : обычные, движущиеся, падающие, ледяные. С игровым процесом вроде разобрались, теперь пару слов о графике. +Графическое оформление игры выполнено на довольно высоком уровне. Все 3D обьекты выполнены хорошо, четко, на них приятно смотреть. Особенно хорошо прорисованы враги. Фоновые картинки тоже хороши, они прекрасно передают атмосферу того мира, в котором вы находитесь. Они не очень яркие, поэтому не режут глаз. Притензий к графике у меня нет. +Музыки в игре немного. Лишь в главном меню звучит хорошая мелодия стиля Средневековья. В игре музыки нет, есть лишь звуки прыжка, хождения и собирания бонусов. Хотя музыка в самой игре, я думаю, смотрелась бы куда лучше. +Управление в игра самое обычное. 2,8 - движение, 4,6 - повороты, 5 - прыжок. 1,3 - шаг влево/вправо. В принципе, нариканий нет, хотя можно было бы немного уменьшить длину шага на кнопках 2,8,1,3 чтобы дракон не вылетал с платформы. +Итог : получилась хорошая, интересная, динамичная игра, НО ОЧЕНЬ сложная. Будем ждать четвёртую часть серии, которая должна выйти в скором времени. +Графика : 9 +Гейплей : 7 +Музыка : 5 +Управление : 8 +Общий балл : 7,2 +Автор статьи - Максим "Ярэп" Постельга \ No newline at end of file diff --git a/src/txt/dream.txt b/src/txt/dream.txt new file mode 100644 index 0000000..6c502c0 --- /dev/null +++ b/src/txt/dream.txt @@ -0,0 +1,29 @@ +Название : Drеаm Dаy Wеdding 2 +Жанр : логика +Разраб : I-Рlаy +Релиз : Август 2009 +img/res/d.gif + + + + + + + + + + + + + + Игры жанра "найди предмет" не очень популярны на jаvа платформе. Компания I-Рlаy решила исправить это, выпустив игры Drеаm Dаy Wеdding и Drеаm Dаy Wеdding 2. Сегодня мы поговорим о второй части, которая удивительно похожа на своих компьютерных собратьев. Здесь так же даётся картинка, и нужно отыскать конкретные предметы на ней. Это не так просто, как кажется, ведь на это дело дается ограниченое количество времени. Кстати, игра на английском, поэтому, если ваши познания ниже средних, советую использовать словарь. Кроме стандартного поиска предметов на картинке, есть еще игра "найди отличие". Экран делится на две части, и нужно найти отличия между картинками. В игре есть 2 подсказки. При использовании, они показывают местоположение любого не найденого предмета. Количество подсказок можно увеличить, есле во время игры найти на картинке 3 синих птицы. +Теперь немного о графике. В игре размером почти мегабайт никак не могла быть плохая графика. Так оно и есть, в игре яркая, красочная графика, все обьекты, даже мелкие, прекрасно прорисованы. Курсор тоже хорошо нарисован, он в виде руки. Когда нажимаешь 5, рука сжимается. +Музыки в игре немного. Лишь одна мелодия, и она вечно повторяется. После 5 минут игры, я не выдержал, и отключил звук совсем. +Управление в игре, напротив, очень удобное. Курсор движется быстро, плавно, не зависает. В общем, одно удовольствие. 2,4,6,8,1,3,7,9 - управление курсором, 5 - выбор. +Итог : хорошая игра по поиску предметов, но немного сложноватая. Но именно такой и должны быть такие игры! А вот музыка подкачала. +Графика : 10 +Геймплей : 8 +Музыка : 3 +Управление : 10 +Общий бал : 8.1 +Автор статьи - Максим "Ярэп" Постельга \ No newline at end of file diff --git a/src/txt/egipet.txt b/src/txt/egipet.txt new file mode 100644 index 0000000..4cd7000 --- /dev/null +++ b/src/txt/egipet.txt @@ -0,0 +1,14 @@ + . 3D N Lizrd. , , . , ( - ks15) . + , . + , . N Lizrd . - , 3D ! " ", . , , ? , . 3D , . . , , , , , , . , . , . , . 3D, , , , . . , , , , , , . , , 10. + . , , . , , . , , , , , . , . 17 , . , 2 . , ... , . . , (, , ). " ", , , . , , 1 M! . , , . ( , ?). , (k ). : , , . , , 3D , ! , , " ", , . " ", , . . "". " ?". . " " - , , , . , ? , . . , , "", , ! 10 . . . +ks15: +-10 10. ! . . , , . - . . - , - ! + -9 10. .Net Lizard . - . , , - . * . , , , . , : . . :5-;1,3- ,,4,6- :7,9- ,;2- ;8- . - . ! + : 10 + : 10 + : 10 + : 9 + : 9.9 + : 3D . N Lizrd, . 2! + - "" "ks15" \ No newline at end of file diff --git a/src/txt/egypt3d.txt b/src/txt/egypt3d.txt new file mode 100644 index 0000000..0b10778 --- /dev/null +++ b/src/txt/egypt3d.txt @@ -0,0 +1 @@ + Egypt 3D. www.netizard.net , . \ No newline at end of file diff --git a/src/txt/fire.txt b/src/txt/fire.txt new file mode 100644 index 0000000..31feb2a --- /dev/null +++ b/src/txt/fire.txt @@ -0,0 +1,52 @@ +Название: Fire Emblem: Invasion (Эмблема Огня: Вторжение) +Жанр: SRPG +Разработчик: Gameislive +Год: 2007 +img/res/2.png + + + + + + + + + + + + + + +В наше время не так часто можно увидеть хорошую SRPG, хотя этот жанр является старейшим в игровой индустрии. Его история начинается задолго до появления первых громоздких игровых автоматов. Раньше, в 70х годах, когда ребятки хотели поиграть, они доставали не мобильный телефон или игровую консоль. Они открывали верхний ящик стола и брали оттуда сложенную в четыре раза карту, различные фигурки, небольшой набор карточек и пару игровых кубиков. Кидая кубик, игроки проводили все рассчеты, начиная от радиуса хода и закончивая количеством атакующих очков. Вот в те то времена и зародились первые SRPG. Но сейчас не 70-е, сейчас XXI-ый век и все рассчеты на себя берет микропроцессор вашего мобильника с поддержкой MIDP 2.0)) +Ну вот мы и подошли вплотную к игре, чье название указано в самом верху статьи. +Fire Emblem: Invasion - первая в легендарной линейке игр от Gameislive. Это игра, которая полностью захватит Ваше сердце, она заставит Вас потратить кучу нервов и, через неимоверное количество ударов телефона о стену (или голову), дойти наконец до финального десятого уровня. Казалось бы всего десять уровней, но каждый уровень - это история, рассказывающая о страданиях королевства София, о народе, который находится под игом остготов и о стремлении принцессы Ямуны избавить королевство от захватчиков. +Есть несколько моментов, отличающих Fire Emblem: Invasion от последующих частей: +- отсутствуют некоторые предметы, которые появятся в следующих частях линейки. ++ есть предметы, которые исчезнут в дальнейших играх. +- отсутствие разнообразия сюжетных линий, которое появится в игре "Fire Emblem: Liberation" ++ в Fire Emblem: Invasion Вы можете сами решать кем станут герои(кроме героев, чье развитие предусмотрено сюжетом (например: Ямуна)): маг или лучник, рыцарь или воин - решать только Вам. ++ повышение статуса героев происходит по достижении 8-ого и 15-ого уровней(при условии что есть необходимый предмет), а не как в следующих частях игры только на 10-ом уровне. +Из вышесказанного можно сразу сказать, что геймплей в Fire Emblem: Invasion на высоте. Поэтому, даже если Вас настолько достанет трудность уровня и Вы решите забросить игру, Вы все равно рано или поздно (скорее рано) возьметесь за нее вновь. +В графическом плане игра великолепна, как и вся серия Fire Emblem. Звуковое сопровождение также на высоте. Если говорить в общем, то игра стоит того, чтобы ей уделили время и если и не пройти полностью, то хотя бы просто получить от нее колосальное удовольствие. Кстати, я не знаю ни одного человека, кто смог бы пройти финальный уровень и убить главного злодея игры. Но мы же будем стараться?! +P.S. Хотелось бы сказать огромное Спасибо V.P.K за столь качественный перевод игры, также людям с форума сайта wap.fonzo.ru, которые по мере своих сил помогали в переводе. +img/res/3.png + + + + + + + + + + + + + + +Графика: 8.5 +Звук: 7 +Геймплей: 9.5 +Средняя Оценка: 8.3 + +Автор статьи: Smoker1 \ No newline at end of file diff --git a/src/txt/hard.txt b/src/txt/hard.txt new file mode 100644 index 0000000..5f7aa26 --- /dev/null +++ b/src/txt/hard.txt @@ -0,0 +1,25 @@ +DIE HARD 4.0 +Жанр:экшен +Разрабочик:Gameloft +Сайт:www.gameloft.com + +Розкажу о игре DIE HARD 4.0. +Принцип действа прост до безобразия-всех убью,один останусь.Впрочем,ожидать чего-нибудь глубокого философского от мобильной игронизации последнего <<Крепкого Орешка>> было бы просто глупо.Наш герой,Джон МакЛейн,с упорством танка несется вперед,превращая все живое на своем в кровавую вермишель.Изредка ему встречаются двери,которые нужно разминировать или открыть с помощью простеньких мини-игр. +Сам процес геноцида неверных до ужаса напоминает те же великолепные Splinter Cell и Prinse of Persia на мобильнике.Главгер может весело угощать неприютеля свинцом издалека ( у него имется пистолет и УЗИ) или заарасивать коктейлями Молотова.Ну,и,разумеется,в лучших традициях игр от этого разрабочика он может ломать вражине мозг,прыгнув сверху.В общем,очень весело и увлекательно. +Что уж тут говорирь-игра чертовски красива:Gameloft всегда этим грешил,к его чести будет сказано.Отличная прорисовка и анимация,эффекты-просто пальчики оближешь по локоть.Другое дело,что игра пролетается вуквально за час.Что вовсе не очень хорошо. +На сей пессемитической ноте заканчиваем и оглашаем приговор:DH4.0 однозначно хорошая игра рекомендована для скачки. + +VERDICT +ГЕЙМПЛЕЙ: +сплошное убивательство +ГРАФИКА: +не истечи слюнями +ЗВУК +приятный,но не в тему +ИГРАБЕЛЬНОСТЬ +2 раза-потолок +Кто не с нами-тот против нас 8/10 + + + +Автор:RA92 \ No newline at end of file diff --git a/src/txt/help.txt b/src/txt/help.txt new file mode 100644 index 0000000..5415159 --- /dev/null +++ b/src/txt/help.txt @@ -0,0 +1,21 @@ +#white : +#white 2,4, , - +6,8, , - +5, - / . +# - + +#white : +#white 2,8 - / +4,6 - / +1,7 - / +3,9 - +* - +. +# - + +#white : +#white 2,8 - / +4,6 - / +1,7 - / +3,9 - +* - diff --git a/src/txt/let.txt b/src/txt/let.txt new file mode 100644 index 0000000..8151dda --- /dev/null +++ b/src/txt/let.txt @@ -0,0 +1 @@ + ! mokushev.evgeniy@rambler.ru stl@wplt.mbi \ No newline at end of file diff --git a/src/txt/line.txt b/src/txt/line.txt new file mode 100644 index 0000000..7047a0c --- /dev/null +++ b/src/txt/line.txt @@ -0,0 +1,50 @@ +Название : Linе Ridеr +Жанр : Активные (Асtiоn) +Разраб : In-Fusio +Релиз : сентябрь 2008 +img/res/4.gif + + + + + + + + + + + + + +"Уникальность этой игры в том, что ты сам рисуешь уровни к ней. А затем откидываешься на спинку кресла и смотришь, как безпечный гонщик на саночках пытается пройти через твой рисунок. +Оригинал для компьютера был создан в сентябре 2006 года. За первые 3 месяца игру скачало 15 миллионов человек! Тысячи из них записали и разместили видео со своими уровнями на YоuТubе.Соm +Заинтересовавшись успехом Linе Ridеr, компания Nintеndо решила выпустить её на своих приставках Wii и DS. Но владельцы мобильных телефонов получили её раньше! " + Именно так мне хочется начать свою статью. Немного истории, так сказать. Но вернёмся же к игре. Жанр "уникальных" игр к моему большому сожалению ничтожно мал. Из "уникальных" игр я могу лишь отметить NОМ, NОМ2, Skеtсhеr, и Linе Ridеr. Они не похожи на другие игры, не сделаны по шаблону, и этим уникальны. Например, в NОМ и NОМ2 нам необходимо на протяжении игры вращать телефон, так как человек будет бежать по всем направлениям экрана, даже вверх ногами. А в Skеtсhеr'е нам необходимо дорисовывать путь бегущему человечку, что бы он мог не упасть, или вовремя перескочить препядствия. +Но наша игра Linе Ridеr особенно уникальна, ведь мы можем дать волю нашей фантазии, и рисовать что угодно, а потом смотреть, как гонщик на саночках будет пытаться проехать наши творения. +В игре присутствуют 2 режима : "Головоломка" и "Создать трэк". В режиме "Головоломка" нам даются различные уровни, с несколькими зарисовками на них, и куча красных палочек, которые надо разбить, проехавшись по ним. Нам предстоит дорисовать уровень так, чтобы гонщик проехал, сбивши все красные палки, и доехал целым и невредимым до финиша. Это не так просто, как кажется. Сдесь можно действительно напрячь мозг, и просидеть несколько часов за решениями головоломок. +Самый главный режим в игре, это, конечно создание трэка. Вы можете рисовать что угодно, используя такие линии, как обычная (не даёт ускорения), ускоряющая (даёт разгон, удобно при подъёмах), обратное ускорение (гонщик начинает двигатся в обратном направлении), разбивающая (при пересечении линии гончиком, она разлетается на куски), финишная (конец трэка), и фоновая (просто линии для фона, гонщик не может по ним проехать). +Также есть стирательная резинка, для удаления ненужных деталей. Все эти инструменты послужат вам для создания уникальных уровней, которые можно сохранить, и показать друзьям. Мне, лично, удавалось нарисовать дом, в который заезджал гонщик, проезджал на второй этаж, затем на крышу, и во двор. В доме была мебель, телевизор, картины. На дворе деревья, забор, и сушилась одежда на верёвке. Так что, как видите, ваша фантазия ничем не ограничивается. +Что касается графики в игре, она примитивна, да и зачем игре такого жанра навороченая графика? Листок в клеточку на фоне, гонщик на саночках - это всё, что нужно для веселья! +Управление в игре самое обычное, удобное и практичное. 4,6,2,8 - перемещение курсора, для рисования. 1,3,7,9 - перемещения по диагонали. *,# - выбор инструментов. 0 - начать трэк. Вот и всё. +О музыке можно просто промолчать. Её в игре не придусмотрено. Только лишь несколько звуков, и то появляющихся редко. Хотя, согласитесь, было бы приятно во время просмотра слышать какую нибудь весёленькую музыку. Ну да ладно. +Итог : разработчикам удалось создать уникальную и единственную в своём роде игру, которая надолго затянет вас! +img/res/5.gif + + + + + + + + + + + + + +Графика : 6 +Геймплей : 6 +Музыка : 1 +Управление : 10 +Общая оценка : 6 +Автор статьи : Максим "Ярэп" Постельга \ No newline at end of file diff --git a/src/txt/mario.txt b/src/txt/mario.txt new file mode 100644 index 0000000..cde45cb --- /dev/null +++ b/src/txt/mario.txt @@ -0,0 +1,28 @@ +Название : Supеr Маriо Fоrеvеr +Жанр : платформенная +Разраб : некто из Китая +Релиз : август 2009 +img/res/mario.png + + + + + + + + + + + + +Старый добрый Марио уже дошел и до китая. Как результат - китайское подобие "марио" с изменённым обликом персонажа. Графика в игре тоже изменилась. Здесь уже нет привычных полей и подземелий, теперь мы путешествуем по каким то подвалам, или чтото такое. Прорисованы они довольно неплохо, но однообразно. Все уровни похожи друг на друга, что, конечно, не очень хорошо. Обьекты в игре довольно хорошо прорисованы, но не идеально. Графики поярче в игре не помешало бы. +Насчет игрового процесса, он не очень увлекателен, ну чуствуется того духа марио, хоть и игра на него похожа. В игре 8 уровней, после прохождения которых игра начинается заново. На пути китайского марио встанут разные соперники, включая куриц, крокодилов, капающего яда, и прочих соперников. В принципе, игра довольно лёгкая, уровень можно пройти, зажав цифру 3. +Насчет музыки мне сказать нечего. Совсем. Или это версия для s40v3 такая, или в игре действительно нет музыки! Для игры такого жанра это большой минус. +Управление в игре стандартное. 4,6 - движение, 1,2,3 - прыжки. 8 (в прыжке) - спрыгнуть вниз, и разбить ящики. +Итог : первый китайский блин по имени Марио вышел комом. Но занять вечерок можно. +Графика : 7 +Геймплей : 7 +Музыка : 0 +Управление : 10 +Общая оценка : 6 +Автор статьи - Максим "Ярэп" Постельга \ No newline at end of file diff --git a/src/txt/mia.txt b/src/txt/mia.txt new file mode 100644 index 0000000..60ecd0b --- /dev/null +++ b/src/txt/mia.txt @@ -0,0 +1,45 @@ +Игра-Miami Night 2:The City is Yours +Разработчик-Gameloft SA +Платформа-java +Дата релиза-24 июля 2009 года. +img/res/mia1.jpg + + + + + + + + + + + + + +Очередной клон или шедевр??? +Именно эти мысли посетили меня,когда я узнал о релизе компанией Gameloft своей новой игры.Это продолжение серии игр в этом жанре-симуляторы жизни.Ожидания у меня были двоякие.С одной стороны-серия 'Найтс' хорошо зарекомендовала себя,с другой-использовался старый движок.И вот наконец,к радости всех фанатов,игра вышла.Скачивая её,я предвкушал великолепие,и забегая вперед,скажу,что не был разочарован.Ну а теперь давайте поговорим непосредственно об игре. +Окрыв игру,в глаза сразу бросилось привычное и знакомое до боли оформление меню.Вслед за загрузкой над предложили выбрать пол нашего персонажа,а также подобрать его стайл-выбрать прическу,одежду,трусы в конце концов.)Выбор гардероба очень большой,и это порадовало.И т ут начинается непосредственно само игровое действо.Первое,что мы видим на экране,так это то,что наш персонаж знаменит и чрезвычайно богат,он желанный обьект для всех папараций мира...О мечты,мечты...И как жестока реальность.Тот мир грёз рушится,и мы просыпаемся в полицейском участке,а в реальной жизни мы всего лишь человек,приехавший в Майями помочь своему другу,попавшему за решётку за кражу собаки.После выхода из участка можно идти покорять город.Почти сразу я обнаружил новую фишку,доселе в играх этой компании не использовавшийся-вам будет предложено сфотографироваться(!) на камеру(!!) своего мобильника(!!!).Удивительно,не так ли?Перейдем к сюжету.Он в этой игре вообще хорош,весьма интересен,и что немаловажно,нелинеен.Кстати о разнообразии-вам встретяться ситуации,когда от вашего решения напрямую будет зависеть дальнейшее развитие игры.Нам предоставлена полнейшая свобода действий,мы можем идти куда захотим,делать всё,что душе угодно... Заводите друзей,влюбляйтесь...Хорошо продуманы и детали общения. Если допустим по сюжету вам нужны что-либо узнать от определенного человека,можно пойти разными путями.Можно втереться к нему в доверие,а можно и пригрозить расправой.Как и в прошлых играх серии,наш персонаж имеет различные качества:здоровье,голод,криминал,харизма и т.д.Их можно балансировать как угодно,к примеру,если обворовать собеседника,то повыситься уровень криминала,а если почитать роман,то повысится уровень интелекта.Может быть и такое,что некоторых людей могут не устраивать ваши определенные качества,и они не захотят с вами общаться.Но ни в коем случае не отчаиваетесь,ведь все в ваших руках!!! +Говорить о графике буду немного-графа супер,типичная,ставшая фирменной лофтовской графа. +С управление тоже все довольно просто-цифровые кнопки 1-9 отвечают за передвижение перса,а 5 открывает меню действий.Звуки в игре тоже вполне приемлемы,на протяжении игры нас сопровождает такая приятная,ненавязывающая музыка.Одним словом-хорошо. +img/res/mia2.png + + + + + + + + + + + + + +Итак,общая оценка игры: +Геймплей-10 баллов +Графика-9 баллов +Управление-8 баллов +Музыка-9 баллов. +Общая оценка игры- 9 баллов. +Спасибо компании Gameloft за очередную блестящую игру.А нашим дорогим читателям от всего журнала JaVaM@nia и лично от меня хочется пожелать-играйте в виртуальном мире,но не забывайте про настоящий.Всем удачи.Пока. +Автор статьи-Максим Maks15 Машин. \ No newline at end of file diff --git a/src/txt/new.txt b/src/txt/new.txt new file mode 100644 index 0000000..5637701 --- /dev/null +++ b/src/txt/new.txt @@ -0,0 +1,6 @@ +Ну вот пришел этот день - я стал частью команды Java Mania. Постараюсь приносить только одну пользу :) Если что то пойдет не так - не ругайте, я еще новенький и мало чего тут знаю. Ну ладно... Сегодня мой первый выход и я хочу, что бы его запомнили надолго :) Вот и первое нововведение с моим приходом - раздел "На пределе". В этом разделе мы будем писать про самые горячие новинки java индустрии, будем ежемесячно поддерживать тему "Топ 5 игр" и многое другое. + + +Если имеется, какой то вопрос именно ко мне - прошу в icq 435-488, либо e-mail slade-x@i.ua + +С уважением Ваш Slade-X diff --git a/src/txt/nit2.txt b/src/txt/nit2.txt new file mode 100644 index 0000000..d405f34 --- /dev/null +++ b/src/txt/nit2.txt @@ -0,0 +1,19 @@ +Игра-Nitro Street Racing 2. +Разработчик-Gameloft SA +Платформа-Java +img/res/nitro.gif + + + + + + + + + + + + + +.2D-гонки,ушедшие в прошлое,или новый виток развития? +Итак,компания Gameloft выпустила вторую часть популярных гонок Nitro Street Racing.(Сразу оговорюсь,что рецензия составлена исходя из версии SE 176:220).Следует отметить,что в отличии от первой части,где были и 2D,и 3D версии,на java платформе вышла только 2D версия,что несомненно огорчило фанатов французской компании.Итак,оценивать этот продукт начнем с графики.Геймлофт всегда создавал игры с отменной графикой,и эта игра не исключение,авто игрока и машины соперников прекрасно прорисованы,что само по себе является плюсом.Графика 9/10. Далее рассмотрим главную составляющую любой игры-геймплей.В Nitro Street Racing 2 он не вызывает нареканий,в игре присутствует 10 транспортных средств,которые можно настроить на свой вкус,благодаря системе тюнинга в игре.Игроку не дадут заскучать постепенно открывающиеся 4 локации,а также многообразие заданий и видов гонок.В игре достойная для данного жанра сюжетная линия,однако после прохождения сюжета играть становится,на мой взгляд,неинтересно,это единственный минус в данной области.Вобщем,геймплей тоже на уровне. 8/10. Следующий сектор-звук в игре.Здесь я буду краток,в игре присутствует довольно энергичная мелодия,характерная для данного жанра и не дающая игроку расслабиться.Озвучка 10/10.- - Управление в игре на первый взгляд,немного неудобное.Однако после нескольких минут прохождения Nitro Street Racing 2,я освоился с управлением и научился полноценно контролировать автомобиль в игре.Однако нашелся небольшой изъян:во время прыжка с трамплина контролировать авто нельзя,что в некоторых ситуациях не кстати.Управление 7/10.Перед нами игра,достойная внимания со стороны моб. геймеров,с затягиваящим геймплеем,посредственным управлением,и качественной графикой. Автор статьи- Максим Man14 Гарев diff --git a/src/txt/r.txt b/src/txt/r.txt new file mode 100644 index 0000000..4356e89 --- /dev/null +++ b/src/txt/r.txt @@ -0,0 +1 @@ + "" , Rep BOX! www.java-mania.ru \ No newline at end of file diff --git a/src/txt/recomenduem.txt b/src/txt/recomenduem.txt new file mode 100644 index 0000000..164aecc --- /dev/null +++ b/src/txt/recomenduem.txt @@ -0,0 +1,37 @@ +Art of War 2: GLOBAL CONFEDERATION +img/res/aow.gif + + + + + + + + + + + + + + + RTS Java! , , , Gameplay. . , Art of War 2 GLOBAL CONFEDERATION! + : http://gear-games.com/wap/?p=c_aow21&=ru + +High Speed 3D +img/res/hs.gif + + + + + + + + + + + + + + + . . , , , - . + : http://wap.herocraft.com diff --git a/src/txt/reda.txt b/src/txt/reda.txt new file mode 100644 index 0000000..0a39bb8 --- /dev/null +++ b/src/txt/reda.txt @@ -0,0 +1,16 @@ +img/res/red.jpg + + + + + + + + + + + + + + + JavaM@NiA! . , , ! wap , http://java-mania.ru , , J2ME . ! , , , ! : : : pure@java-mania.ru ; , : support@java-mania.ru . JavaM@NiA! \ No newline at end of file diff --git a/src/txt/redbull.txt b/src/txt/redbull.txt new file mode 100644 index 0000000..842a3b7 --- /dev/null +++ b/src/txt/redbull.txt @@ -0,0 +1,16 @@ +Название : Rеd Вull Soаpbох Rасе +Разраб : НаndyGаmеs +Жанр : гонка/аркада +Релиз : август 2009 + Словосочетание Rеd Вull в названии игры сразу подсказало мне, что в игре будет скорость и драйв. Но нет, это вовсе не гонка с реалистичной графикой и физикой, а веселая гонка с элементами аркады. О чем же собственно игра? В ней мы будем принимать участие в гонках в различных странах, на весьма необычных машинах. Дело в том, что машины в игре будут создаватся из всего, что попадется под руку. Например, корпус можно сделать из бочки, бревна, огромного ботинка, и т.п., а колеса из тарелок, дисков... В общем такие вот диковинные средства передвижения у нас. +Игровой процесс однообразен на протяжении всей игры. Нам снова и снова прийдется принимать участие в заездах (меняются лишь страны, после каждых 3 туров). Соперников также не придусмотрено. Чтобы заработать медали, нужно доехать до финиша живим так быстро, как сможешь, попутно собирая разбросанные по трассе синие флажки. Всего в игре 7 стран, в каждой из которых 3 заезда. Разбавляет однообразные гонки одна мини игра. Её суть вот в чем : стоят человечки, под каждым из них соответствующая цифра (2,4,6,8), и танцуют под музыку (о музыке расскажу чуть позже). Нам нужно внимательно следить за ними, и как только кто то из них собьется с ритма, нажимать нужную кнопку. Чесно говоря, не понимаю, какое отношение эти танцы имеют к гонкам, но вроде от правильности твоего управления групой зависит количество бонусных очков. Кстати говоря, по мере путешествия по разным странам, облик человечков будет менятся. Но вернемся к самой гонке. Вид в игре от первого лица ( но не из кабины, это же не 3D). По мере прохождения игры будут открыватся новые детали для создания своей "машины". +Графика как для игры такого рода, очень красочная. На фоне можно видеть картинки, отображающие, в какой стране проходит гонка. Также в игре много анимации. Она яркая, красочная, и прорисована хорошо : движение машины, прыжки, танцы людей, публика, разлетающиеся во все стороны стоги сена и защитные колпаки... В общем, в игре чуствуется драйв. Эх, были бы соперники... +Что до музыки, её в игре много, она разная для каждого события : меню, выбор машины, танец, гонка, награждение, и т.д. Во время танцев звучит забавная музыка, наблюдать за человечками, танцующими в такт интересно. Музыка передает то, что происходит на экране. Во время гонки другая музыка, не менее веселая. Хотя хотелось бы что нибудь подинамичней, или, хотя бы звук мотора... +Пару слов об управлении. Оно очень простое. 2,4,6,8 для танца, и 6,4 для поворота в гонке. Вот и всё. +Итог : получилась весёлая и динамичная игра, которая увлечёт вас на некоторое время. +Графика : 8 +Геймплей : 6 +Музыка : 9 +Управление : 10 +Общий балл : 8.2 +Автор статьи : Максим "Ярэп" Постельга \ No newline at end of file diff --git a/src/txt/true.txt b/src/txt/true.txt new file mode 100644 index 0000000..8629d39 --- /dev/null +++ b/src/txt/true.txt @@ -0,0 +1,43 @@ +Название : Тruе Fighting 3D +Жанр : 3D драки +Разраб : [][][][][] +Релиз : Август 2009 +Перевод на русский : RОМZЕS +img/res/diavol.gif + + + + + + + + + + + + +Вот наконецто была переведена (и взломана) игра, которую лично я долго ждал : Тruе Fighting 3D. Игра предстовляет собой хороший 3D файтинг от китайских разработчиков. +Графика в игре довольно хорошая. Правда окружение прорисовано немного смазано, но хотя бы есть несколько видов арен, которые отличаются друг от друга. Воины прорисованы получше (их 5 штук). Спецэффекты также яркие и динамичные, удары хорошо анимированы. Пол прорисован немного смазано. В общем, к графике у меня притензий нет, хотя могла быть и получше. +Геймплей. В игре есть 3 режима : аркада (обучится и отточить навыки), арена (чемпионат из 22 боев, сложность увеличивается по мере прохождения), и игра по Вluеtооth (один на один с другим игроком). Как я говорил раньше, в игре 5 персонажей. Они отличаются внешним видом и способностями. Также есть множество ударов и комбо. Не может не радовать режим по bt. Теперь можно устраивать битвы с своими друзьями. Процесс битвы довольно интересен, у соперников неплохой интелект, победить бывает довольно непросто. После каждого боя идет повтор последних моментов, что, довольно неплохо. Конечно, персонажей можно было сделать побольше, ну ладно. +Музыка. В игре присутствует всего 1 мелодия, которая вечно повторяется. Это не очень хорошо, конечно, но в принципе терпимо. Хотя музыка могла быть и подинамичней. +Управление в игре довольно удобное. 2, 8 - движение по кругу, 4, 6 - движение вперёд/назад, 5 - удар, 7 - аперкот, 9 - суперудар. Комбинации клавиш образуют комбо. +img/res/oboroten.gif + + + + + + + + + + + + +Итог : первые 3D драки из Китая получились довольно неплохие, будем ждать еще проектов. +Графика : 8 +Геймплей : 8 +Музыка : 6 +Управление : 9 +Общая оценка : 7.9 +Автор статьи - Максим "Ярэп" Постельга \ No newline at end of file diff --git a/src/txt/urbanattack.txt b/src/txt/urbanattack.txt new file mode 100644 index 0000000..788b0cd --- /dev/null +++ b/src/txt/urbanattack.txt @@ -0,0 +1,26 @@ +Urban Attack + img/res/urban.png + + + + + + + + + + + + + + + + + ! , + , +, + . + + ! + 3D , + ! \ No newline at end of file diff --git a/src/txt/vazno.txt b/src/txt/vazno.txt new file mode 100644 index 0000000..0fde4d6 --- /dev/null +++ b/src/txt/vazno.txt @@ -0,0 +1,8 @@ + ! + , . . + + games-review.ru + + . + + , ! \ No newline at end of file diff --git a/src/txt/wolf.txt b/src/txt/wolf.txt new file mode 100644 index 0000000..e3daa64 --- /dev/null +++ b/src/txt/wolf.txt @@ -0,0 +1,27 @@ +Wolfenstein RPG +img/res/wolf.png + + + + + + + + + + + + + + +После огромного успеха Doom RPG, Electronic Arts решили сделать что нибудь похоже но получше... И у них это действительно получилось! Встречайте на страницах нашего журнала Wolfenstein RPG + +Вы B.J. Blazkowicz командир элитного отряда США, который должен проникнуть в замок Wolfenstein. Вы должны остановить Ось и спасти мир! +Особенности игры: +- Используйте все ваши умения, чтобы выжить на протяжении 9 уникальных уровней. +- Сразитесь с 32 типами врагов, включая суперсолдат, элитную охрану и зомби. +- Арсенал из 17 видов обычного и паранормального оружия. +- Найдите секреты, сокровища и другие скрытые вещи. +- Получите медали или пункты опыта за хорошо проделанную работу. +- Читайте книги - они помогут улучшить ваши способности +- Проверьте свои умения в 2 мини-играх: "War" и "Kick the Chicken" \ No newline at end of file diff --git a/src/xml/aoh.al b/src/xml/aoh.al new file mode 100644 index 0000000..cc147a3 --- /dev/null +++ b/src/xml/aoh.al @@ -0,0 +1 @@ +Mobile si - /txt/basic.txt \ No newline at end of file diff --git a/src/xml/chts.al b/src/xml/chts.al new file mode 100644 index 0000000..e573f21 --- /dev/null +++ b/src/xml/chts.al @@ -0,0 +1,4 @@ +Gradonus - /txt/Gradonus.txt +3D Pool HR - /txt/3DPoolHR.txt +Dangerous Dave - /txt/DangerousDave.txt +Meteos: Astro Blocks - /txt/MeteosAstroBlocks.txt \ No newline at end of file diff --git a/src/xml/inter.al b/src/xml/inter.al new file mode 100644 index 0000000..e69de29 diff --git a/src/xml/main.al b/src/xml/main.al new file mode 100644 index 0000000..18d3ae3 --- /dev/null +++ b/src/xml/main.al @@ -0,0 +1,10 @@ + - redaktor.al + - predel.al + - news.al + () - rec.al + - chts.al + - mod.al + - /txt/No.txt + - /txt/No.txt + - /txt/let.txt + - other.al \ No newline at end of file diff --git a/src/xml/mod.al b/src/xml/mod.al new file mode 100644 index 0000000..cc147a3 --- /dev/null +++ b/src/xml/mod.al @@ -0,0 +1 @@ +Mobile si - /txt/basic.txt \ No newline at end of file diff --git a/src/xml/news.al b/src/xml/news.al new file mode 100644 index 0000000..aca6d9c --- /dev/null +++ b/src/xml/news.al @@ -0,0 +1,3 @@ +DOOM 2 RPG - /txt/doom.txt +Rep BOX - /txt/r.txt +Egypt 3D - /txt/egypt3d.txt \ No newline at end of file diff --git a/src/xml/other.al b/src/xml/other.al new file mode 100644 index 0000000..fa35673 --- /dev/null +++ b/src/xml/other.al @@ -0,0 +1,2 @@ + Java - /txt/Exit.txt +Java@ - /txt/recomenduem.txt \ No newline at end of file diff --git a/src/xml/predel.al b/src/xml/predel.al new file mode 100644 index 0000000..23748cc --- /dev/null +++ b/src/xml/predel.al @@ -0,0 +1,5 @@ + - /txt/new.txt +Dom 2 - /txt/doomrpg2.txt +S hin - /txt/cschina.txt +Urbn ttk - /txt/urbanattack.txt +Wolfnstin RG - /txt/wolf.txt \ No newline at end of file diff --git a/src/xml/rec.al b/src/xml/rec.al new file mode 100644 index 0000000..09905b5 --- /dev/null +++ b/src/xml/rec.al @@ -0,0 +1,15 @@ +G.I.Joe Rise of Cobra - /txt/cobra.txt +Cops LA Police - /txt/cops.txt +3D Diamond Fever - /txt/diamond.txt +Dragon and Dracula 3D - /txt/dragon.txt +Dream Day Wedding 2 - /txt/dream.txt +Egypt 3D - /txt/egipet.txt +Fire Emblem Invasion - /txt/fire.txt +Die Hard 4 - /txt/hard.txt +Line Rider - /txt/line.txt +Miami Nights : The city is yours - /txt/mia.txt +Nitro Street Racing 2 - /txt/nit2.txt +Red Bull Soapbox Race - /txt/redbull.txt +Super Mario Forever - /txt/mario.txt +True Fighting 3D - /txt/true.txt +Captain Galactic : Super Space Hero - /txt/cap.txt \ No newline at end of file diff --git a/src/xml/redaktor.al b/src/xml/redaktor.al new file mode 100644 index 0000000..6bd309d --- /dev/null +++ b/src/xml/redaktor.al @@ -0,0 +1,2 @@ + - /txt/reda.txt +! - /txt/vazno.txt \ No newline at end of file diff --git a/src/xml/skin.ini b/src/xml/skin.ini new file mode 100644 index 0000000..3f04b83 --- /dev/null +++ b/src/xml/skin.ini @@ -0,0 +1,10 @@ + - 333531 + - 4b403f + - eb8a71 + - b22e0a + - ^150 + - d8e4f8 + - FFFFFF + - F0F0F0 + - 003dac + - F0F0F0 \ No newline at end of file