日麻进阶牌效防守

手牌的简写

  • m=萬子, p=筒子, s=索子, z=字牌, 0=赤
  • 一般形=4面子1雀頭 / 標準形=一般形+七対形+国士形

单张牌效

在这里插入图片描述

搭子处理

搭子效率:两面搭>崁张>边张

数排效率:34567>28>19
在这里插入图片描述

对子处理

做对子比做面子简单很多,开局手牌无对子,进对子的牌效为1/3左右,所以对子很容易就形成了

  • 一般做的牌型/门清前提

    • 两个对子刚刚好,可以进入双碰进牌来得到四张有效牌
    • 三个对子太多,多余的对子只有两张有效牌,所以把一个对子拆掉换成其他搭子,通常是不错的选择
  • 有副露/七对子

    • 可以考虑保留对子

向听数、有效牌、五种听牌型

x向听:还差x张牌就可以听牌。(※注意区别x向听和x面听,x面听指听牌种类有x种)

听单骑可以不立直,因为可以有很多有效牌来改良四个面子
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对子复合型、补强牌(112)

在这里插入图片描述

三对拆好型,两对拆愚型

三对对子太多
比如445,112,788
好型更容易摸,所以拆掉一个4或8,从10枚变成8枚有效牌,损失1/5进章不算多,愚型更容易成面子,从而使最终形状更容易听好型,也更容易有平和。拆愚型就从6枚变成4枚,损失1/3进章,这个愚型也容易成为瓶颈卡住成为最后听牌型,也不易有平和。

两崁

两崁(135)

两面>两崁>嵌张

在这里插入图片描述

两崁比两面有一定缺陷,两崁需3张牌,比两面少一张可以自己应用的牌,如果是两面,剩余的一张可以是安全牌可以是补强牌

而且两崁没办法当做听牌型来使用,雀头成型一向听,两崁也只能拆一张变崁张听牌


两崁复合型 两面崁张 两面/边张+顺子+跳张

通常为四连牌的2/3位为对子再加首/尾崁张

在这里插入图片描述

例:

4 4 5 6 6 8 数牌 多数人会切掉8来做一杯口 但是可以拆成 456 + 468 面子加两崁

所以除了5外7也是进张之一


长两崁

在这里插入图片描述

四张复合型(2345/6789)

在这里插入图片描述

中膨型(3445)

不建议打中间多余的一张,中膨型算是很强的牌型

不记花色,一列数牌的中膨型可以分为七种组合

边张中膨型(1223)

有限不如中张单张高

在这里插入图片描述

亚两面(1123/2344)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

筋牌

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

避铳安全表

在这里插入图片描述

壁牌

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是进阶版的代码,可以实现计分的功能,并且可以跳转到另一个 Activity: MainActivity.java ```java public class MainActivity extends AppCompatActivity { private int scoreTeamA = 0; private int scoreTeamB = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnAddOneTeamA = findViewById(R.id.btnAddOneTeamA); Button btnAddTwoTeamA = findViewById(R.id.btnAddTwoTeamA); Button btnAddThreeTeamA = findViewById(R.id.btnAddThreeTeamA); Button btnAddOneTeamB = findViewById(R.id.btnAddOneTeamB); Button btnAddTwoTeamB = findViewById(R.id.btnAddTwoTeamB); Button btnAddThreeTeamB = findViewById(R.id.btnAddThreeTeamB); Button btnReset = findViewById(R.id.btnReset); Button btnNext = findViewById(R.id.btnNext); btnAddOneTeamA.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scoreTeamA = scoreTeamA + 1; displayForTeamA(scoreTeamA); } }); btnAddTwoTeamA.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scoreTeamA = scoreTeamA + 2; displayForTeamA(scoreTeamA); } }); btnAddThreeTeamA.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scoreTeamA = scoreTeamA + 3; displayForTeamA(scoreTeamA); } }); btnAddOneTeamB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scoreTeamB = scoreTeamB + 1; displayForTeamB(scoreTeamB); } }); btnAddTwoTeamB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scoreTeamB = scoreTeamB + 2; displayForTeamB(scoreTeamB); } }); btnAddThreeTeamB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scoreTeamB = scoreTeamB + 3; displayForTeamB(scoreTeamB); } }); btnReset.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scoreTeamA = 0; scoreTeamB = 0; displayForTeamA(scoreTeamA); displayForTeamB(scoreTeamB); } }); btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, NextActivity.class); intent.putExtra("scoreTeamA", scoreTeamA); intent.putExtra("scoreTeamB", scoreTeamB); startActivity(intent); } }); } private void displayForTeamA(int score) { TextView scoreView = findViewById(R.id.scoreTeamA); scoreView.setText(String.valueOf(score)); } private void displayForTeamB(int score) { TextView scoreView = findViewById(R.id.scoreTeamB); scoreView.setText(String.valueOf(score)); } } ``` NextActivity.java ```java public class NextActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_next); TextView scoreViewTeamA = findViewById(R.id.scoreTeamANext); TextView scoreViewTeamB = findViewById(R.id.scoreTeamBNext); Intent intent = getIntent(); int scoreTeamA = intent.getIntExtra("scoreTeamA", 0); int scoreTeamB = intent.getIntExtra("scoreTeamB", 0); scoreViewTeamA.setText(String.valueOf(scoreTeamA)); scoreViewTeamB.setText(String.valueOf(scoreTeamB)); } } ``` 在这个版本中,我们新增了一个名为 `NextActivity` 的 Activity,并在 `MainActivity` 中添加了一个名为 `btnNext` 的按钮,点击该按钮可以跳转到 `NextActivity` 中。同时,我们在 `MainActivity` 中将当前的分数传递给了 `NextActivity`,在 `NextActivity` 中将接收到的分数显示出来。 请注意,为了让跳转功能正常运行,你需要在 AndroidManifest.xml 中添加以下代码: ```xml <activity android:name=".NextActivity"></activity> ``` 这样就完成了进阶版的计分代码,并且可以跳转到另一个 Activity 中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值