通过对鸿蒙的学习,我通过探索与挑战,做了一个关于石头剪刀布的小游戏

RB软工移211 202119144135陈勃初

一.通过点击按钮进入游戏开始游戏,点击石头,剪刀,布,输入对应的手势 与人机进行对战

【江鸟中原】基于鸿蒙开发的石头剪刀布小游戏_Image

二.页面布局,以下为代码


<Image
    ohos:height="200vp"
    ohos:width="200vp"
    ohos:scale_mode="zoom_center"
    ohos:layout_alignment="center"
    ohos:image_src="$media:enemy"
    ></Image>

<Image
    ohos:top_margin="30vp"
    ohos:height="200vp"
    ohos:id="$+id:enemy"
    ohos:width="200vp"
    ohos:scale_mode="zoom_center"
    ohos:layout_alignment="center"
    ohos:image_src="$media:bu"
    ></Image>

<DependentLayout
    ohos:height="match_content"
    ohos:width="match_content"
    ohos:margin="20vp"
    ohos:layout_alignment="center"
    >

    <Button
        ohos:id="$+id:bu"
        ohos:height="40vp"
        ohos:width="80vp"
        ohos:text="布"
        ohos:margin="10vp"
        ohos:text_size="27fp"
        ohos:background_element="$graphic:capsule_button_element"
        ></Button>
    <Button
        ohos:id="$+id:jiandao"
        ohos:right_of="$id:bu"
        ohos:height="40vp"
        ohos:width="80vp"
        ohos:background_element="$graphic:capsule_button_element"
        ohos:text="剪刀"
        ohos:text_size="27fp"
        ohos:margin="10vp"
        ></Button>
    <Button

        ohos:id="$+id:shitou"
        ohos:right_of="$id:jiandao"
        ohos:margin="10vp"
        ohos:height="40vp"
        ohos:width="80vp"
        ohos:text="石头"
        ohos:text_size="27fp"
        ohos:background_element="$graphic:capsule_button_element"
        ></Button>




</DependentLayout>

<DependentLayout
    ohos:height="match_content"
    ohos:width="match_content"
    ohos:left_margin="145vp">

    <Text
        ohos:id="$+id:pp"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text_size="27fp"
        ohos:text="得分:"></Text>

    <Text
        ohos:id="$+id:defen"
        ohos:right_of="$id:pp"
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:text_size="27fp"
        ohos:text="0"></Text>

</DependentLayout>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
       ohos:shape="rectangle">
    <corners
        ohos:radius="100"/>
    <solid
        ohos:color="#007CFD"/>
</shape>

三.以下为核心代码

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:ohos="http://schemas.huawei.com/res/ohos"

      ohos:shape="rectangle">

   <corners

       ohos:radius="100"/>

   <solid

       ohos:color="#007CFD"/>

</shape>


import com.example.caiquan2.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.agp.components.Button; import ohos.agp.components.Component; import ohos.agp.components.Image; import ohos.agp.components.Text;

import java.util.Random;

public class MainAbilitySlice extends AbilitySlice { static Button bu; static Button shitou; static Button jiandao; static Text defen; static Image enemy; static Integer core=0; Random random=new Random();

@Override
public void onStart(Intent intent) {
    super.onStart(intent);
    //给slice 配置xml布局
    super.setUIContent(ResourceTable.Layout_mainslice);
        initView();

}

public void initView()
{	//通过id搞到相关应用
    bu= (Button) findComponentById(ResourceTable.Id_bu);
    shitou= (Button) findComponentById(ResourceTable.Id_shitou);
    jiandao= (Button) findComponentById(ResourceTable.Id_jiandao);
    defen= (Text) findComponentById(ResourceTable.Id_defen);
    enemy= (Image) findComponentById(ResourceTable.Id_enemy);
   	//给石头剪刀布三个按钮绑定单击事件
    bu.setClickedListener(this::chuli);
    shitou.setClickedListener(this::chuli);
    jiandao.setClickedListener(this::chuli);

}



//根据component的不同做出不同处理
private void chuli(Component component)
{   int way;
    String name=component.getName();
    if(name.equals("Id_shitou"))
        way=0;
    else if(name.equals("Id_jiandao"))
        way=1;
    else
        way=2;

    System.out.println(name+":"+way);

    int enemyway=random.nextInt(3);
    //0石头 1 剪刀 2 布

    System.out.println(enemyway);
    if(enemyway==0)
        enemy.setPixelMap(ResourceTable.Media_shitou);
    else if(enemyway==1)
        enemy.setPixelMap(ResourceTable.Media_jiandao);
    else
        enemy.setPixelMap(ResourceTable.Media_bu);

    if(way==0)
    {
        if(enemyway==1)
            core++;
        else if(enemyway==2)
            core--;
    }
    else if(way==1)
    {
        if(enemyway==2)
            core++;
        else if(enemyway==0)
            core--;
    }
    else
    {
        if(enemyway==0)
            core++;
        else if(enemyway==1)
            core--;
    }
    defen.setText(core.toString());



}



@Override
public void onActive() {
    super.onActive();
}

@Override
public void onForeground(Intent intent) {
    super.onForeground(intent);
}

}

四.总结

通过这次作业 我又学到了许多关于鸿蒙的知识,提高了自己