最近看《赛博朋克 边缘者》 看到黑客流破解 是个数独游戏。一直想试着写一下.并且重新通关 《城市之王》结局。

赛博朋克黑客流 数独游戏

在这里插入图片描述
在这里插入图片描述
仅仅是写一个View里边,画出来的。其实没什么。

首先定义好,你要选择的字母。

    private  val textV= arrayListOf<String>("a","b","c","d","e"
                            ,"f","g","h","i","j","k","l","m","n","o","p","q","r","s"
                            ,"t","u","v","w","x","y","z","1","2","3","4","5","6","7","8"
                            ,"9","10");

26个字母 加10个数字。
铺满 6行 自定义字母。 重要的是 要记录每个字母的范围 和 字母内容。定义一个实体point()
然后在onDraw中画出来

        for (j in 1 until 7){
            listOfCanvasCrack2= arrayListOf<point>();
            for (i in 0 until 7){
                val  randoms =(0..35).random();
                var s1=textV.get(randoms)
                var point1:point= point();
                point1?.setName(s1)
                point1?.setX(((94+ i* range1!!).toFloat()));
                point1?.setY((range1!! + j*range1!!).toFloat());
                listOfCanvas.add(point1);
                listOfCanvasCrack2?.add(point1);
            }
            listOfCanvasCrack1.add(listOfCanvasCrack2!!);
        }
其实 画出来并不重要

主要很复杂的是 横框 和竖框 和规范的选择范围。我们在点击的时候形成纵横的黄色条框。以输入数框的基偶来判断横竖。 并且选择在条幅中,其他地方无法选择。

        for (i in 0 until listOfCanvas.size){
          var point1:point=listOfCanvas.get(i);
              if(aboolean!!){
                  if(abooleanNumber == i){
                      canvas?.drawRect(Rect(
                          (point1.getX()- DimensonPixSize!!*0.8).toInt(),
                          (point1.getY()+ DimensonPixSize!!*1.4/2).toInt(),
                          (point1.getX()+ DimensonPixSize!!*1.4).toInt(), (point1.getY()- DimensonPixSize!!*1.4).toInt()
                      ), mPaintStroke!!)
                      if(listOfCanvasWrite.size %2!=0){
                          canvas?.drawRect(Rect(
                              (pointFirst!!.getX()- DimensonPixSize!!*0.8).toInt(),
                              (point1.getY()- DimensonPixSize!!*1.4).toInt(),
                              (pointLast!!.getX()+ DimensonPixSize!!*1.4).toInt(), (point1!!.getY()+ DimensonPixSize!!*0.7).toInt())
                              , mPaintStroke1!!)
                      }else{
                          canvas?.drawRect(Rect(
                              (point1.getX()- DimensonPixSize!!*0.8).toInt(),
                              (pointFirst!!.getY()- DimensonPixSize!!*1.4).toInt(),
                              (point1!!.getX()+ DimensonPixSize!!*1.4).toInt(), (pointLast!!.getY()+ DimensonPixSize!!*1.4).toInt())
                              , mPaintStroke1!!)
                      }

                  }
              }
          for (j in 0 until listOfCanvasWrite.size){
              var point2:point= listOfCanvasWrite.get(j) as point;
              if(j==listOfCanvasWrite.size-1){
                  if(j %2==0){
                      canvas?.drawRect(Rect(
                          (pointFirst!!.getX()- DimensonPixSize!!*0.8).toInt(),
                          (point2.getY()- DimensonPixSize!!*1.4).toInt(),
                          (pointLast!!.getX()+ DimensonPixSize!!*1.4).toInt(), (point2!!.getY()+ DimensonPixSize!!*0.7).toInt())
                          , mPaintStroke1!!)
                  }else{
                      canvas?.drawRect(Rect(
                          (point2.getX()- DimensonPixSize!!*0.8).toInt(),
                          (pointFirst!!.getY()- DimensonPixSize!!*1.4).toInt(),
                          (point2!!.getX()+ DimensonPixSize!!*1.4).toInt(), (pointLast!!.getY()+ DimensonPixSize!!*1.4).toInt())
                          , mPaintStroke1!!)
                  }
              }
          }

              canvas?.drawText(point1.getName(),point1.getX(),point1.getY(),mPaint!!);
      }

下一章。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昏暗的夜晚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值