对Graphic的应用,实现类似九宫格的绘制字符串、制定圆心,半径绘制圆形、用火柴棍拼字[Java ME]

原创 2008年10月03日 10:26:00

 

 

 

 

  1. import javax.microedition.midlet.*;
  2. import javax.microedition.lcdui.*;
  3. public class HomeWork extends MIDlet implements CommandListener {
  4.     
  5.     Display d=Display.getDisplay(this);
  6.     
  7.     Form f=new Form("主窗口");
  8.     
  9.     Command back=new Command("返回",Command.BACK,1);
  10.      Command exit=new Command("退出",Command.EXIT,1);
  11.     Command drs=new Command("绘制字符串",Command.OK,1);
  12.     Command drc=new Command("画圆",Command.OK,1);
  13.     Command drn=new Command("火柴棍拼字",Command.OK,1);
  14.    
  15.     //用于画圆的
  16.     public class CircleCanvas extends Canvas
  17.     {
  18.         int pointX,pointY,len;
  19.         public void paint(Graphics g)
  20.         {
  21.             g.setColor(25500);
  22.             g.fillArc(pointX, pointY, len, len, 0360);
  23.            
  24.             g.drawRect(pointX, pointY, len, len);//框住了就代表对了
  25.         }
  26.         public void drawCircle(int x,int y,int r)
  27.         {
  28.             pointX=x-r;
  29.             pointY=y-r;
  30.             len=2*r;
  31.         }
  32.     }
  33.     
  34.     //用于在指定位置绘制字符串
  35.     public class MyCanvas extends Canvas
  36.     {
  37.         String printword="";
  38.         int[] myenum={    00, Graphics.LEFT|Graphics.TOP, 
  39.                         getWidth()/2,0,Graphics.HCENTER|Graphics.TOP,
  40.                         getWidth(), 0, Graphics.RIGHT|Graphics.TOP,
  41.                         
  42.                         0, getHeight()/2, Graphics.LEFT|Graphics.TOP
  43.                         , getWidth()/2,getHeight()/2,  Graphics.HCENTER|Graphics.TOP
  44.                         , getWidth(), getHeight()/2, Graphics.RIGHT|Graphics.TOP
  45.                         
  46.                         , 0, getHeight(), Graphics.LEFT|Graphics.BOTTOM
  47.                         , getWidth()/2,getHeight(),  Graphics.HCENTER|Graphics.BOTTOM
  48.                         , getWidth(), getHeight(), Graphics.RIGHT|Graphics.BOTTOM
  49.         };
  50.         int[] position=new int[3];
  51.        public void paint(Graphics g)
  52.        { 
  53.            g.setColor(25500);
  54.            g.drawString(printword,position[0],position[1],position[2]);
  55.        }
  56.          public void DrawMyStrin(String s,int pos)
  57.          {
  58.              printword=s;
  59.              position[0]=myenum[pos*3-3];
  60.              position[1]=myenum[pos*3-2];
  61.              position[2]=myenum[pos*3-1];
  62.          }
  63.        } 
  64.     
  65.     //用火柴棍拼字
  66.     public class MatchNum extends Canvas
  67.   {
  68.         int[][] lines={
  69.         {100,100,120,100},//0
  70.         {100,120,120,120},//1
  71.         {100,140,120,140},//2 //三个横
  72.         
  73.         {100,100,100,120},//3
  74.         {100,120,100,140},//4//左边的两竖
  75.         
  76.         {120,100,120,120},//5
  77.         {120,120,120,140}};//6//右边的两竖
  78.         
  79.         int[][] nums={
  80.         {0,2,3,4,5,6},//0
  81.         {5,6},//1
  82.         {0,1,2,5,4},//2
  83.         {0,1,2,5,6},//3
  84.         {5,6,1,3},//4
  85.         {0,1,2,3,6},//5
  86.         {3,4,0,1,2,6},//6
  87.         {0,5,6},//7
  88.         {0,1,2,3,4,5,6},//8
  89.         {0,1,3,5,6,2},//9
  90.         };
  91.         int[] temp;
  92.      public void drawMyNum(int n)
  93.      {
  94.          temp=nums[n];
  95.      }
  96.      public void paint(Graphics g)
  97.      {g.setColor(255,0,0);
  98.       int i=temp.length;
  99.       for(int j=0;j<=i-1;j++)
  100.       {
  101.           int[] a=lines[temp[j]];
  102.           g.drawLine(a[0],a[1],a[2],a[3]);
  103.       }
  104.         
  105.      }
  106.   }
  107.    
  108.     
  109.     public void startApp() {
  110.             f.addCommand(exit);
  111.             f.addCommand(drs);
  112.             f.addCommand(drc);
  113.             f.addCommand(drn);
  114.             f.setCommandListener(this);
  115.             d.setCurrent(f);
  116.     }
  117.     
  118.     public void commandAction(Command c,Displayable dis)
  119.     {
  120.         if(c==exit)
  121.            destroyApp(false); 
  122.         
  123.         else if(c==drs)
  124.         {   MyCanvas m=new MyCanvas();
  125.             m.addCommand(back);
  126.             m.setCommandListener(this);
  127.             m.DrawMyStrin("字符串"new java.util.Random().nextInt(8)+1);
  128.             d.setCurrent(m);}
  129.         
  130.         else if(c==drc)
  131.         {
  132.             CircleCanvas cc=new CircleCanvas();
  133.             cc.addCommand(back);
  134.             cc.setCommandListener(this);
  135.             cc.drawCircle(606040);
  136.             d.setCurrent(cc);
  137.         }
  138.         
  139.         else if(c==drn)
  140.         {
  141.             MatchNum mn=new MatchNum();
  142.             mn.addCommand(back);
  143.             mn.setCommandListener(this);
  144.             mn.drawMyNum(new java.util.Random().nextInt(9));
  145.             d.setCurrent(mn);
  146.         }
  147.         
  148.         else if(c==back)
  149.         {
  150.             d.setCurrent(f);
  151.         }
  152.     }
  153.     public void pauseApp() {
  154.     }
  155.     public void destroyApp(boolean unconditional) {
  156.         notifyDestroyed();
  157.     }   
  158. }

WIKIOI-1168 火柴棒等式

题目描述 Description 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示...
  • u013517797
  • u013517797
  • 2014年03月02日 16:47
  • 1630

火柴棍的等式 算法

这里有个地方有点坑,“若该数非零,则最高位不能是0”(若该数是零,那么最高位可以为0?    但上传结果后表示 ,像00是不允许的) 算法思路是: 回溯求的等式序列,回溯过程用“所用的火柴棍小于等于...
  • baidang201
  • baidang201
  • 2013年02月06日 09:44
  • 1132

MATLAB中已知圆心和半径画圆

今天在用MATLAB编程的时候,用到了已知圆心和半径,画圆的程序,上网搜了一下,主要有下面两种,在这里总结一下:(这里我都是放在函数中做的,想画多个圆的话可以加个for循环调用一下函数,或者直接用向量...
  • ZLK961543260
  • ZLK961543260
  • 2017年04月17日 21:08
  • 9554

火柴棍移动的一道面试题

最近有朋友找工作,面试某公司,遇到一个火柴棍移动的面试题,感觉有点意思,在此抛砖引玉。 题目大致是这样的: 一个三个数的式子,移动其中一根火柴,使等式成立,用程序实现,输出能成立的等式。 注:“+...
  • dingyuanpu
  • dingyuanpu
  • 2014年08月12日 22:19
  • 2682

【C++心路历程11】1182火柴棒等式,打表!

#include #include #include #include using namespace std; int a[25]={0,0,0,0,0,0,0,0,0,0,0,0,0,1...
  • ctf109
  • ctf109
  • 2016年10月29日 11:01
  • 903

NOIp2008 火柴棒等式

描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示: 注意: 1.  加号...
  • Mr_Doublerun
  • Mr_Doublerun
  • 2016年09月19日 22:00
  • 1108

啊哈!算法—火柴棍等式

现手中有m(m 注意: 1、加号与等号各自需要2根火柴棍; 2、如果A不等于B,则A+B=C与B+A=C视为不同的等式(三者均大于0); 3、所有根火柴棍必须全都用上。 思路:  24根除...
  • LY_624
  • LY_624
  • 2016年05月02日 13:37
  • 1262

第16周 啊哈算法 火柴棍等式

问题及代码: /*m
  • Emperor_21AD_ShiDi
  • Emperor_21AD_ShiDi
  • 2016年07月11日 14:46
  • 752

一个类似“火柴棍”问题的面试题

今天老师让做一道面试题,通过这个面试题,我感受到自己的C语言基本功还不扎实,思维还不够发散。   小时候,大家可能都玩过“火柴棍”的游戏,就是摆好的火柴棍,只改变一根就可以变为其他的形状或数字。 ...
  • u012027907
  • u012027907
  • 2013年10月09日 12:59
  • 1586

java小例子:打印一个近似圆,要求根据给定半径圆的大小随之发生改变

如题:通过API文档查询Math类方法,打印如下所示的近似圆,只要给定不同的半径,圆的大小随之发生改变。 import java.lang.Math; ...
  • Monarch_lin
  • Monarch_lin
  • 2013年03月15日 23:02
  • 3791
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对Graphic的应用,实现类似九宫格的绘制字符串、制定圆心,半径绘制圆形、用火柴棍拼字[Java ME]
举报原因:
原因补充:

(最多只允许输入30个字)