java – 我的代码是否过于重复?
发布时间:2020-12-15 02:04:44 所属栏目:Java 来源:网络整理
导读:我正在研究我的文本冒险游戏,并想知道是否有一种更简单的方法来编写重复的代码块,例如我在下面的内容. 在该块中,向用户呈现北,东,南和西的N,E,S,W.所以我分别编写每个监听器,并在每个监听器中包含一个try / catch块.但现在整个代码块似乎都是重复的. 这是代
我正在研究我的文本冒险游戏,并想知道是否有一种更简单的方法来编写重复的代码块,例如我在下面的内容.
在该块中,向用户呈现北,东,南和西的N,E,S,W.所以我分别编写每个监听器,并在每个监听器中包含一个try / catch块.但现在整个代码块似乎都是重复的. 这是代码块: btnNorth.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tvIntro.setText("You go north"); String testString = "nothing"; try { testString = Encounter.EncounterGeneratorText(); } catch (Exception e) { e.printStackTrace(); } testString = Encounter.EncounterGeneratorText(); tvIntro.setText(testString); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } tvIntro.setText(testString); } }); btnEast.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tvIntro.setText("You go east"); String testString = "nothing"; try { testString = Encounter.EncounterGeneratorText(); } catch (Exception e) { e.printStackTrace(); } testString = Encounter.EncounterGeneratorText(); tvIntro.setText(testString); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } tvIntro.setText(testString); } }); btnSouth.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tvIntro.setText("You go south"); String testString = "nothing"; try { testString = Encounter.EncounterGeneratorText(); } catch (Exception e) { e.printStackTrace(); } testString = Encounter.EncounterGeneratorText(); tvIntro.setText(testString); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } tvIntro.setText(testString); } }); btnWest.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tvIntro.setText("you go west"); String testString = "nothing"; try { testString = Encounter.EncounterGeneratorText(); } catch (Exception e) { e.printStackTrace(); } testString = Encounter.EncounterGeneratorText(); tvIntro.setText(testString); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } tvIntro.setText(testString); }; }); 解决方法
您可以创建一个所有按钮都将使用的OnClickListener,在该OnClickListener中,您将检测单击了哪个按钮并在switch语句中执行特定于方向的任务.
像这样的东西: private OnClickListener DirectionClickListner = new OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.north: //Set your strings for North break; case R.id.west: //Set your strings for West break; case R.id.east: //Set your strings for East break; case R.id.south: //Set your strings for South break; } } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |