精华内容
下载资源
问答
  • Android Training Prework-一个简单的待办事项清单 SimpleTodo是一个Android应用程序,它允许构建待办事项列表和基本的待办事项管理功能,包括添加新项目,编辑和删除现有项目。 提交者:legochen ...
  • 代码路径待办事项 这是一个Android 待办事项应用程序CodePath 的预工作简单的Android 待办事项列表分配。 花费时间:共花费5小时 完成的用户故事: 必需:用户可以将项目添加到待办事项列表 必需:用户可以删除...
  • Vscode Todo Tree插件

    千次阅读 2020-10-22 22:01:01
    Vscode Todo Tree插件 安装 打开 vscode 扩展中心,搜索 todo tree 然后安装, 配置 打开vscode设置,文件→首选项→设置,然后以json文件打开,并增加以下配置 "todo-tree.highlights.customHighlight": { ...

    Vscode Todo Tree插件

    在这里插入图片描述

    安装

    打开 vscode 扩展中心,搜索 todo tree 然后安装,
    在这里插入图片描述

    配置

    打开vscode设置,文件→首选项→设置,然后以json文件打开,并增加以下配置

    在这里插入图片描述

    "todo-tree.highlights.customHighlight": {
            "TODO": {
                "icon": "check",
                "type": "tag",
                "foreground": "black",
                "background": "yellow",
                "opacity": 50,
                "iconColour": "yellow"
            },
            "FIXME": {
                "icon": "flame",
                "type": "tag",
                "foreground": "red",
                "background": "white",
                "opacity": 50,
                "iconColour": "red"
            }
     }
    

    配置解释:

    • icon:这个为目录树图标,可以按照这个网址修改

      https://microsoft.github.io/vscode-codicons/dist/codicon.html

    • type:是TODO和FIXME这两个关键字的类型支持以下类型

      • tag
      • text
      • tag-and-comment
      • text-and-comment
      • line
      • whole-line
    • foreground:是指关键字在代码中的前景色

    • background:是指关键字代码中的背景色

    • opacity:透明度

    • iconColour:目录树区域的图标颜色

    基本使用

    • // TODO :代表未完成事项
    • // FIXME :代表需要修复的事项
    展开全文
  • 这个Todo列表是使用 , , 和以及前端的其他库以及以及后端的Apollo Server和GraphQL制成的。 至于数据库,我使用MongoDB和MongoDB Atlas进行托管。 特征 使用jsonwebtoken和个人开发的身份验证中间件hoc进行用户...
  • workon todo 如果你不这样做。 virtualenv todo source todo/bin/activate 切换到存储库文件夹 cd tododjango 安装依赖项 pip install -r requirements.txt 创建数据库 python manage.py syncdb 运行 Todo 应用...
  • // TODO Auto-generated method stub String n = ""; int i; Scanner scanner = new Scanner(System.in); n = scanner.nextLine(); StringBuffer n2 = new StringBuffer(n); n2.reverse();//字符串...

    编写一个Java应用程序。用户从键盘输入一个整数,程序将判断这个数是几位数并输出其位数,并判断这个数是否是回文数(是,则输出“是回文数”,否则输出“不是回文数”)。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都是回文数。要求:定义两个方法,一个用于获取一个整数的位数,一个用于返回一个整数是否为回文数。

    方法1

    package 作业1;
    import java.util.Scanner;
    /*
    //逐个逆置然后比较
    //这是没写方法的
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		String n = "";
    		int i;
    		Scanner scanner = new Scanner(System.in);
    		n = scanner.nextLine();
    		
            StringBuffer n2 = new StringBuffer(n);
            n2.reverse();//字符串逆置
            
    		int sum = 0;
    		for(i = 0;i < n.length();i++)//直接比较
    		{
    			if(n.charAt(i) == n2.charAt(i))
    				sum++;
    		}
    		System.out.println(n.length());
    		if(sum == n.length())
    			System.out.println("Y");
    		else
    			System.out.println("N");
            scanner.close();
    	}
    	
    }
    */
    
    //这是写方法的
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		String n = "";
    		Scanner scanner = new Scanner(System.in);
    		n = scanner.nextLine();
    		System.out.println(GetLength(n));
    		JudgeHuiwen(n);
    		scanner.close();
    		
    		
    	}
    	public static int GetLength(String ss)
    	{
    		return ss.length();
    	}
    	public static boolean JudgeHuiwen(String ss)
    	{
    		StringBuffer n = new StringBuffer(ss);
            n.reverse();//字符串逆置
            
    		int i,sum = 0;
    		for(i = 0;i < ss.length();i++)//直接比较
    		{
    			if(ss.charAt(i) == n.charAt(i))
    				sum++;
    		}
    		if(sum == ss.length())
    		{
    			System.out.println("是回文数");
    			return true;
    		}
    			
    		else
    		{
    			System.out.println("不是回文数");
    			return false;
    		}
    	}
    }
    

    方法2:

    方法二的话就是你把它当整数输入,之后判断回文时再把int变成string。这样就可以避免输入空格(123 321)这种错误的情况造成答案错误。

    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int n ;
    		Scanner scanner = new Scanner(System.in);
    		    n = scanner.nextInt();
    		System.out.println(GetLength(n));
    		JudgeHuiwen(n);
    		scanner.close();
    		
    		
    	}
    	public static int GetLength(int ss)
    	{
    		int i = 0,j;
    		for(j = 0;j < ss;ss/=10)
    		{
    			if(ss > 0)
    			{
    				i++;
    			}
    		}
    		return i;
    	}
    	public static boolean JudgeHuiwen(int ss)
    	{
    		String a = "";
    		a = ss+ "";
    		StringBuffer n = new StringBuffer(a);
            n.reverse();//字符串逆置
            int i,sum = 0;
    		for(i = 0;i < a.length();i++)//直接比较
    		{
    			if(a.charAt(i) == n.charAt(i))
    				sum++;
    		}
    		if(sum == a.length())
    		{
    			System.out.println("是回文数");
    			return true;
    		}
    		else
    		{
    			System.out.println("不是回文数");
    			return false;
    		}
    	}
    }
    
    

     

    展开全文
  • 解决 Android Studio 中 TODO Highlight 效果消失的问题 http://www.jianshu.com/p/e823f20a0c68 转载请注明出处:http://blog.csdn.net/My_TrueLove/article/details/72857949  访问 ruicb.com,...


    解决 Android Studio 中 TODO Highlight 效果消失的问题

    http://www.jianshu.com/p/e823f20a0c68


    转载请注明出处:http://blog.csdn.net/My_TrueLove/article/details/72857949 

    访问 ruicb.com,一键抵达我的博客!

    在开始之前,我们先来看看开发过程中常会碰到的一些问题:

    • 这块代码好几次用到了,应该抽出去;
    • 这个算法可以换个更高效的写法;
    • 这段逻辑绕来绕去,其实可以换个思路。
    • ……

    相信许多人都遇到过这些情况,那么,此时我们该怎么做呢?

    呵,这还用问?

    • 重复代码? 顺手就抽出去了;
    • 算法效率堪忧? 你倒是优化啊;
    • 逻辑不清晰? 还不赶紧重构,等啥。

    如果你也是这么想,我觉得要么你就没参与过实际项目开发,要么你就等着项目 delay 被吊打吧。

    要知道,大多数公司的开发周期都很紧,我们应该沿着主线任务推进,先保证新的需求实现了,主要功能能够 work 并自测通过了,时间富余的情况下再去想着优化或者重构代码。

    你表示不服:说的倒好,时间富余再去优化。那要没有富余时间呢,就不优化了?

    不能这么说,你想,如果按照我说的先实现新需求、自测,再优化的步骤,你没有富余时间说明啥?说明开发时间正好够我们新增需求,那你要是在开发过程中去干了优化的事,那需求还能做完吗?没毛病…

    所以我们要搞清楚,对于这些问题,应该先标记着,等主线任务开发完了,再去优化。而不是管他三七二十一,撸起袖子就整,整不好就没法收尾,甚至引发其它问题,我是认真的(经历过的人自然懂)。

    这里提到的标记着以后再做,就涉及到我们今天要说的 TODO 的概念。

    说了半天还没开始,且息怒,之所以先铺垫,是想让一些没有接触过、或者刚接触实际开发项目的同学,明白为什么要像下文那么做。

    一、 TODO 简介

    大家应该都用过记事或备忘软件,或者是番茄记事之类的,一般这种软件都有一个功能叫 “TODO list”。什么意思呢?就是待做清单。

    我们在日常生活中,经常想起来要做一件事,但手头正忙来不及做,就会先记在 “TODO list” 中,等忙完手头的事或者下班后看看记了哪些,然后去做。

    开发中也是这样,遇到像上面那些问题,我们应该先记下来:

    • 重复代码? 先标记上,回头抽出去;
    • 算法效率堪忧? 先标记上,回头优化;
    • 逻辑不清晰? 先标记上,回头重构。

    这里说的标记,并不是在记事软件上记下来:标注上要做什么,在哪个类哪一行,这太扯了。而是利用 Android Studio 提供的 TODO 功能来实现这一需求。

    二、 Android Studio TODO 用法

    在 Android Studio 中,支持通过 TODO 在代码中插入标记,其本质上就是特殊的注释。只不过 TODO 注释能够在 Android Studio 提供的 TODO 视图窗口中查看并快速定位。

    1. 添加 TODO

    添加 TODO

    当然,你也可以在方法内部对某一行代码添加 TODO。

    2. 查看 TODO

    在 Android Studio 右下角中有一个 TODO tab,点击即可打开 TODO 视图,来查看项目中标记的 TODO。

    查看 TODO

    如果没有 TODO tab,你可以通过左上角的菜单打开:View -> Tool windows -> TODO。

    TODO tab

    3. 完成 TODO

    完成 TODO 标记的事件后,就可以删除该 TODO 注释。 理想状态下,我们应该在每一版本发版前,完成所有 TODO,以保持 TODO 视图中没有遗留的事项,也只是理想状态…

    三、 Android Studio FIXME 用法

    除了 TODO 标记,我们还可以使用 Android Studio 提供的 FIXME 来标记一些待修复的问题,FIXME 与 TODO 在本质上没有任何区别,只是不同的标记罢了。区别于 TODO 标记,FIXME 可以认为是偏向于标记存在问题的 TODO 事项。

    一句话弄清二者区别: TODO 是总称,FIXME 是细分。

    1. 添加 FIXME

    其用法同 TODO,添加时如下: 
    添加 FIXME

    然后同样在 TODO 视图中可以看到:

    在 TODO 视图中可以看到

    2. 筛选 FIXME

    但是,当项目中 TODO 和 FIXME 较多且混在一起时,找起来可就比较费尽了,此时我们可以使用 “过滤” 功能来区分开 TODO 和 FIXME。

    首先,添加过滤 FIXME 的条件,点击 TODO 窗口左侧的漏斗,选择 Edit Filters,按照图示添加 FIXME 过滤条件:

    筛选 FIXME

    添加完毕后,再次点击漏斗,选择刚才添加的 FIXME 过滤条件,在 TODO 视图中将只会看到 FIXME 标记的 TDOO 事项:

    使用过滤 FIXME 的条件

    最后,就是解决 FIXME 并删除了,不再赘述。

    四、 自定义 TODO

    一般我们习惯于直接用 TODO 来标记所有待办事项,但 TODO 是总称,比较广义,所有 “待办事项” 都可以用 TODO 标记。当项目中有大量 TODO 时,你会发现无法快速定位要找的 TODO,或者无法区分该 TODO 到底属于哪种类型(虽然可以添加描述,但这个描述的作用太弱了,无法筛选)。

    下面举个栗子,在开发过程中,我们经常发现一些遗留代码可以重构,此时我们不可能立即着手去做,应该通过 TODO 去标记:

    // TODO: 2017/5/1 待重构
     
    • 1

    但是,这样的 TODO 不容易识别,也无法筛选,后期只能通过附加的描述 “待重构” 去判断。此时,按照 FIXME 是 TODO 的细分的逻辑,我们不仅会问:

    是不是可以自定义一个细分 TODO ,来标记重构?

    答案是肯定的。

    1. 自定义重构 TODO: REFACTOR

    其实,TODO 的本质就是满足特定正则的注释,这样说就好理解了。

    通过右上角的菜单, File -> Settings -> Editor -> TODO 打开 TODO 设置面板,点击右上方的 + 添加一个正则,如图:

    添加一个正则

    在 Pattern 中输入正则表达式 \brefactor\b.*,然后选择一个 Icon(可选),点击 OK 关闭添加面板,再次点击 OK 应用并关闭设置面板。

    添加完 REFACTOR 类型的 TODO 之后,你迫不及待想试试,但发现不管怎样系统都没有智能提示以补全代码,心想我在坑你。其实不然,TODO 标记和智能提示是两码事。

    你添加了一个自定义的 TODO 正则,系统匹配后将其视为 TODO,在代码中高亮并显示在 TODO 视图中;而智能提示和自动补齐是 代码模版 的功能。不是一回事,明白吗?

    你在代码中纯手敲一个 REFACTOR 的 TODO 也不是不可以,只不过这样效率太低了。

    // REFACTOR: 2017/5/1 待重构 
     
    • 1

    下面,跟随我一起添加一个 REFACTOR 的代码模版吧。

    2. 添加代码模版 Live Template

    通过右上角的菜单, File -> Settings -> Editor -> Live Templates 打开代码模版设置页面,找到 AndroidComments 并展开,你会发现熟悉的 fixme 和 todo,我们就仿着它们添加我们的代码模版。不了解的同学可以点击右下角 Help 简单学习下。

    1.点中 AndroidComments,点击右上角 +,选择 Live Template

    这里写图片描述

    2.在下方出现的面板中填上对应内容,分别是:缩写、描述、模版文本。

    • 缩写:我们在代码中敲对应缩写,就会出现智能提示;
    • 描述:智能提示时的描述;
    • 模版文本:缩写对应的补齐后的文本(不局限于代码),在这可以声明变量;

    此处我填写内容如下:

    填写内容如下

    3.在模版文本中,我们使用  date  声明了日期变量,使用  todo  声明了描述代办的变量,变量是用来占位的。那这两个变量到底如何赋值呢?

    注意右侧的 Edit variables,即编辑变量。点击该按钮,打开 “Edit Template Variables” 面板。表格中,四列分别对应了:变量名称、表达式、默认值、如果已定义则跳过。具体的使用方法,同样可点击右下角的 Help 看一下,这不是本文的重点。看看我最后设置的值:

    最后设置的值

    此处,我将 date 变量的表达式设为 date(),系统将会使用当前日期来填补该变量的占位,并勾选 “跳过” 选项,表示有值的话就不再自己编辑。

    同时,对于 todo 变量,是用来添加描述的,无法使用表达式赋值,所以我选择了赋予默认值 “待重构”,并且没有勾选 ” 跳过”。这样的话,系统会默认为我赋值 “待重构”,但我的光标还会定在那儿,我可以继续编辑,或者回车使用默认值。 

    这块不好理解的话可以看后面的 gif 动图,就明白了。

    4.编辑变量后,点击 OK 返回上一页,最后还需要定义该模版运用的上下文,也就是在哪些地方可以通过缩写调出代码模版。

    在界面下方,有一段文本:No applicable contexs yet. 后面跟着一个 Define,点击就会弹出设置模版运用上下文的列表。我们一般是在 Java 代码中添加 REFACTOR TODO,所以全选 Java,当然你也可以按需选择。

    5.最后勾选右侧的 Refactor according to style,表示自动格式化代码(调整对齐、缩进等),点击右下角 ‘OK’,运用该模版并退出。

    最终效果是这样的:

    最终效果

    点击右下角 OK,运用该模版并退出。

    3 在代码中使用 REFACTOR TODO

    在需要添加重构标识的地方,输入 refactor,输入过程中,智能提示就出来了,回车确认即可。

    至此我们就成功添加了一个 REFACOR 类型的 TODO。下面看演示,我输入慢点,注意看我们在上面提到的 默认值 和 跳过 ,在代码补齐时对 日期和描述 的影响:

    使用 REFACTOR TODO

    区别于之前的 todo 和 fixme,自动补齐时加上了默认描述”待重构”,你可以继续输入覆盖,或者直接回车确认。

    和 TODO、FIXME 一样,代码高亮并出现在 TODO 视图中。

    TODO视图中的REFACTOR

    五、 结束

    至此,有关 TODO 用法及自定义 TODO 全部介绍完毕,希望对你有所帮助,并在实际开发中举一反三。最后,感谢转发分享,并发表你的看法。

    扫描下方二维码,关注我的公众号《Android进阶之旅》,及时获取最新文章推送!


    展开全文
  • 您必须创建数据库“ todo_list”,然后添加密码为“ todo_list”的用户“ todo_list”,并使其成为已创建数据库的所有者。 后端 所有命令都在后端文件夹中运行 安装python(> = 3.4) 安装virtuaenv工具并为项目...
  • Java小游戏坦克大战(一)

    千次阅读 多人点赞 2018-07-15 20:15:54
    * All plotted work is to be completed within this method . * g is a brush object . The instantiation of g is system - assisted . * g is the brush that the system provides to us and can be used ...

    最近,学校安排来深圳尚学堂实训,我又重新拿起了我的Java,故此更新一个月的Java实训,今天主要是一个Java小游戏--坦克大战的坦克的移动的简单实现。(20180715)

    1、首先,我们建立一个com.hbust.app的包,继续创建一个TankGame的类,今天的内容主要如下:

    游戏的入口
     * 1:产生一个游戏主窗口的界面。实现窗口的关闭的功能。
     * 2: 实现窗口绘制的功能,绘制一些基本的图形出来。添加按键事件。

     * 3:绘制一个坦克出来,然后可以通过键盘控制坦克四向移动。

    代码如下:

    package com.hbust.app;
    import com.hbust.frame.GameFrame;
    
    /**
     * This is the entrance to the game.
     * 1.creates an interface for the main window of the game. Realize the function of window closing.
     * 2.draw a tank out and then control the tank's four-way movement via the keyboard.
     * 
     *@author gc
     *
     **/
    
    public class TankGame {
    	public static void main(String[] args) {
    		//Creates a Frame object.
    		new GameFrame();
    	}
    }

    2、接着,创建一个com.hbust.frame的包,以及一个GameFrame的类,在这个类中,我们实现了游戏的基本窗口,以及相应的事件监听器。

    代码如下:

    package com.hbust.frame;
    import com.hbust.constant.Constant;
    import com.hbust.entity.Tank;
    
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    /**
     * Game main window class, in which all drawing functions are completed
     * @author gc
     * 
     * */
    //Inheriting the Frame class provided by Java
    public class GameFrame extends Frame{
    	private Tank myTank;
    	//Constructor to initialize the window
    	public GameFrame() {
    		initFrame();
    		initWindowListener();
    		initMyTank();
    		}
    	//the method to initialize MyTank
    	private void initMyTank() {
    		myTank = new Tank(100, 100, Tank.DIR_UP);
    	}
    	
    	private void initFrame(){
    		//Title of window
    		setTitle(Constant.GAME_TITLE);
    		//Set window size does not change
    //		setResizable(false);
    		
    		//Set the initial size of the window
    		setSize(Constant.FRAME_WIDTH, Constant.FRAME_HEIGHT);
    		//Set the starting position of the window(mediate)
    		setLocation(Constant.SYS_SCREEN_W-Constant.FRAME_WIDTH>>1,
    				Constant.SYS_SCREEN_H-Constant.FRAME_HEIGHT>>1);
    		
    		//Because the window is still hidden after it's been created.
    		//Display the current game window
    		setVisible(true);		
    	}
    
    	/**
    	 * Add listening events to the game window
    	 * 
    	 * */
    	private void initWindowListener(){
    		//Adding an event method to a window
    		addWindowListener(new WindowAdapter() {
    			//Processing window events
    			public  void windowClosing(WindowEvent e) {
    				//When the close button is clicked, the method is executed
    				//Click close virtual machine
    				System.exit(0);
    			}
    		});
    		addKeyListener(new KeyListener() {
    			
    			@Override
    			public void keyTyped(KeyEvent e) {
    				// TODO Auto-generated method stub
    				
    			}
    			
    //			called when a key is released
    			public void keyReleased(KeyEvent e) {
    				// TODO Auto-generated method stub
    				
    			}
    			
    //			 called when a key is pressed
    			public void keyPressed(KeyEvent e) {
    				// e saves information about pressed keys
    				// get the virtual key value of the pressed key
    				int code = e.getKeyCode();
    				switch (code) {
    				case KeyEvent.VK_A://left
    					myTank.setDir(Tank.DIR_LEFT);
    					myTank.setX(myTank.getX()-5);
    					repaint();
    					break;
    
    				case KeyEvent.VK_D://right
    					myTank.setDir(Tank.DIR_RIGHT);
    					myTank.setX(myTank.getX()+5);
    					repaint();
    					break;
    					
    				case KeyEvent.VK_W://up
    					myTank.setDir(Tank.DIR_UP);
    					myTank.setY(myTank.getY()-5);
    					repaint();
    					break;
    					
    				case KeyEvent.VK_S://down
    					myTank.setDir(Tank.DIR_DOWN);
    					myTank.setY(myTank.getY()+5);
    					repaint();
    					break;
    				}
    				
    				
    			}
    		});
    	}
    	private int x = 500, y = 500;
    	/**
    	 *  All plotted work is to be completed within this method .
    	 * g is a brush object . The instantiation of g is system - assisted .
    	 * g is the brush that the system provides to us and can be used directly
    	 * paint cannot call .repaint () directly:
    	 * */
    	public void paint(Graphics g) {
    		myTank.draw(g);
    	}
    
    }
    

    3、为了代码比较好审查,我们将一些定义的常量单独做一个文件包,放在com.hbust.constant的Constant类中。

    代码如下:

    package com.hbust.constant;
    /**
     * All the literal constants used in the game
     * @author gc
     * 
     * */
    public class Constant {
    	//Game title
    	public static final String GAME_TITLE = "my happy hour!";
    	//The width and height of the main window
    	public static final int FRAME_WIDTH = 800;
    	public static final int FRAME_HEIGHT = 600;
    	//Get the height and width of the current screen
    	public static final int SYS_SCREEN_W = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
    	public static final int SYS_SCREEN_H = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
    	
    
    }
    
    

    4、创建一个坦克的实体类,主要完成坦克的简单绘制以及简单的功能的实现。放在com.hbust.entity的Tank的类中。

    代码如下:

    package com.hbust.entity;
    
    import java.awt.Color;
    import java.awt.Graphics;
    
    /**
     * A class used to describe a tank
     * analysis:
     * tank attributes:
     * tank functions:
     * 
     * @author gc*/
    
    public class Tank {
    //	define the four directions of the tank
    		public static final int DIR_UP 		= 0;
    		public static final int DIR_DOWN 	= 1;
    		public static final int DIR_LEFT 	= 2;
    		public static final int DIR_RIGHT 	= 3;
    		
    //		Several states of a tank
    		public static final int STATE_STAND = 0;
    		public static final int STATE_MOVE 	= 1;
    		public static final int STATE_DIE 	= 2;
    		public static final int STATE_FIRE 	= 3;
    		private int x,y; // coordinate
    		private int width = 30;//Width
    		private int dir;//direction
    		private int speed;//speed
    		private int state;//States of tank
    		private Color color = Color.ORANGE;//Color of tank
    		
    		//The Construction method of Tank
    		public Tank(int x, int y, int dir) {
    			super();
    			this.x   = x;
    			this.y   = y;
    			this.dir = dir;
    		}
    		/**
    		 * the drawing method of tank
    		 * @param g*/
    		public void draw(Graphics g) {
    			//Sets the color of the brush to the specified color
    			g.setColor(color);
    			g.fillRect(x, y, width, width);
    			
    			//Draw a black border
    			g.setColor(Color.BLACK);
    			g.drawRect(x, y, width, width);
    			
    			//Draw a gun barrel(the half of tank's width)
    			int w = width>>1;
    			switch (dir) {
    			case DIR_UP:
    				g.drawLine(x+w, y-w, x+w, y+w);
    				break;
    			case DIR_DOWN:
    				g.drawLine(x+w, y+w, x+w, y+3*w);
    				break;
    			case DIR_LEFT:
    				g.drawLine(x-w, y+w, x+w, y+w);
    				break;
    			case DIR_RIGHT:
    				g.drawLine(x+3*w, y+w, x+w, y+w);
    				break;
    			}
    			
    		}
    		/**the method to set direction of tank
    		 * @param dir
    		 */
    		public void setDir(int dir){
    			this.dir = dir;
    		}
    		
    		public void setX(int x){
    			this.x = x;
    		}
    		public void setY(int y){
    			this.y = y;
    		}
    		public int getX(){
    			return x;
    		}
    		public int getY(){
    			return y;
    		}
    		
    
    		
    }

    效果如图,可以完成坦克的四个方位的运动:

    哈哈,感觉尚学堂的学习强度还是比较大,早九点到晚九点,中午就休息两个小时,写代码也开始尝试用英文写注释,虽然只能用百度翻译,但是慢慢来吧!加油!

    展开全文
  • TODO 简介 二 Android Studio TODO 用法 添加 TODO 查看 TODO 完成 TODO 三 Android Studio FIXME 用法 添加 FIXME 筛选 FIXME 四 自定义 TODO 自定义重构 TODO REFACTOR 添加代码模版 Live Template 在代码中...
  • 无Plan无Todo,不Work

    2014-08-28 10:54:44
    # 无Plan无Todo,不Work
  • DECLARE_WORK

    千次阅读 2017-09-13 01:02:00
    1. static DECLARE_WORK(brcmf_driver_work, brcmf_driver_register); 2. brcmf_sdio_register(); 3. sdio_register_driver(&brcmf_sdmmc_driver); 4. static struct sdio_driver brcmf_sdmmc_driver = {
  • emacs-org-TODO

    2021-02-20 11:48:24
    TODO * TODO 学习 使用特定字符进行标记,用于安排日程规划。 需要配合*栏目使用。 快捷键 key description C-c C-t 将当前栏目切换为TODO/DONE C-c / t 按照TODO缩进显示 C-c a t 收集全部TODO S-...
  • todo提纲

    2019-05-06 14:54:00
    wide为啥work,如何优化特征;详述attention,attention在ctr预估中如何使用,din为啥work?详述transformer,如何应用于ctr预估;item2vec为啥work,如何优化?dssm的原理,如何应用推荐系统中?推荐系统的流量分层...
  • priority todo

    2019-04-19 11:04:00
    analyze the work about change to right spindle 转载于:https://www.cnblogs.com/dannykong/p/10734660.html
  • Dropwizard Todo示例 使用SpringContextBuilder创建Spring ApplicationContext的示例“待办事项” Dropwizard应用程序。 在此示例应用程序中,我们使用SpringContextBuilder来创建Spring应用程序上下文并通过Spring...
  • 微软todo使用教程There are many great tutorials that walk you through creating apps, from simple todo lists to fully working web apps. But how do you start your own projects from scratch? Without the ...
  • toDo 包含: [MVVM VueJs] [构建工具 webpack] [样式 ele Ui] how to work? 安装 依赖 npm install 本地启动 npm start 构建 npm build 项目结构 1.index.html 入口文件 2.src 说明 assets 静态资源文件夹 components...
  • deferred work

    2020-02-02 15:40:27
    总共有两种类型的工作:structure work_struct和struct delayed_work struct delayed_work { struct work_struct work ; struct timer_list timer ; /* target workqueue and CPU ->timer uses to ...
  • #Pre- work-这里的应用程序名称 应用程序的名称是一个Android应用程序,它允许构建待办事项列表和基本的待办事项管理功能,包括添加新项,编辑和删除现有项。 提交者:Lyse Ladouceur 花费的时间:总共花费了X个...
  • Reload ToDo file

    2020-12-25 18:11:23
    When those applets fire, the way they seem to work, is that the todo file is deleted and a new file is written. works fine with Qtodo seeing this and you get the dialog that the file is missing (per ...
  • XL-Todo Help

    2019-05-04 08:22:17
    XL-Todo Describe The personal schedule is to develop a personal schedule work plan, and add a reminder function to the current itinerary and matters. Use the calendar operation interface to track the ...
  • 例如,如果工作项的状态为ToDo ,则工作项的状态将更改为doing 。 该操作也支持默认和自定义流程模板。 支持的拉取请求 :clockwise_vertical_arrows: 状态 该操作当前支持关闭状态。 不久将添加对其他请求请求状态...
  • 示例gsd:GSD(完成任务)| 在Haskell中演示CQRSCommand采购的基本Todo列表
  • We use this so that the app can also work offline. Bootstrap3: ----------- meteor add mizzao:bootstrap-3 Taking care of css Iron-Router: ------------ meteor add iron:router Takes care of Routing.
  • 概述工作单元模式有如下几个特性:1、使用同一上下文2、跟踪实体的状态3、保障事务一致性。工作单元用来维护一个由已经被业务事物修改的业务对象组成的列表。Unit Of Work模式负责协调...
  • OOP-Teamwork-源码

    2021-05-02 18:35:41
    TODO列表应用程序,TODO可以具有截止日期,优先级,类型等 日历应用程序,与地点和日期保持会议,有通知等 具有不同用户,不同角色,朋友列表,用户信息,用户之间的聊天,用户组等的社交网络 聊天应用程序,支持...
  • Orginal: http://help.openerp.com/question/69/how-does-notifications-inbox-tome-and-todo-mailboxes-work/ The first thing is to understand how the notification feature works in OpenERP. Here are the...
  • work-day-activities-源码

    2021-04-10 08:19:02
    此仓库用于跟踪我们在TODO小组工作日内从事的活动。 什么是工作日? 工作日主要用于清理的各个存储库。 我们发现,如果我们不定期留出时间来完成这些任务,它们将永远无法完成。 我们从事的工作包括但不限于…… ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,850
精华内容 11,940
关键字:

todowork