SwiftUI100天:使用SwiftUI搭建一个剪刀石头布App(上)

简介: 在本章中,你将学会使用SwiftUI搭建一个剪刀石头布App。

image.png

前言

为了更加熟悉和了解SwiftUI,本系列将从实战角度出发完成100个SwiftUI项目,方便大家更好地学习和掌握SwiftUI

这同时也是对自己学习SwiftUI过程的知识整理。

如有错误,以你为准。

项目搭建

首先,创建一个新的SwiftUI项目,命名为RockPaperScissors

image.png

逻辑分析

剪刀石头布的逻辑遵循一个循环规律:剪刀赢布布赢石头石头赢剪刀

我们可以让我们与计算机作为对手,由用户设置出拳,然后和系统随机出拳,然后看看看谁赢。

PS:好无聊的游戏。

页面样式

了解完剪刀石头布的逻辑之后,我们来完成页面样式的设计。

image.png

App标题

App标题,我们使用Text文本作为标题样式,示例:

// 标题
func titleView() -> some View {
    HStack {
        Text("剪刀石头布")
            .font(.title)
            .fontWeight(.bold)
            .foregroundColor(.black)
        Spacer()
    }
}
复制代码

image.png

标题部分就不多说了,使用TextSpacer构建一个左上角的标题。

规则选择

剪刀石头布游戏有个很有意思的规则,是用户可以选择“玩几盘”,比如:一盘定胜负,三盘两胜,五盘三胜等。

那么我们也需要完成这个规则,首先需要游戏次数规则名称,示例:

@State var gameTimes: Int = 1
@State var ruleName: String = "一局定胜负"
复制代码

然后,供用户选择规则,我们构建这个样式,示例:

// 规则
func ruleView() -> some View {
    Menu {
        Button("一局定胜负") {
            self.gameTimes = 1
            self.ruleName = "一局定胜负"
        }
        Button("三局两胜") {
            self.gameTimes = 3
            self.ruleName = "三局两胜"
        }
        Button("五局三胜") {
            self.gameTimes = 5
            self.ruleName = "五局三胜"
        }
    } label: {
        Label(ruleName, systemImage: "slider.horizontal.3")
            .foregroundColor(.gray)
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 10, maxHeight: 60)
            .background(Color(.systemGray6))
            .cornerRadius(8)
    }
}
复制代码

image.png

上述代码中,我们使用Menu菜单构建了一个规则选择功能,我们提供了三种规则,分别是:一局定胜负三局两胜五局三胜

当我们选择不同的规则是,我们重新给游戏次数gameTimes和规则名称ruleName赋值,就完成了规则设置的样式。

系统出牌

由于App是人机对抗模式,则我们需要构建系统出牌和用户出牌,系统出牌部分,我们先声明一个变量展示默认值,示例:

@State var computerPushImage: String = "game"
复制代码

然后构建系统出牌的样式,示例:

// 系统出牌
func computerPush() -> some View {
    Image(computerPushImage)
        .resizable()
        .aspectRatio(contentMode: .fit)
        .frame(width: 300)
        .clipShape(Circle())
}
复制代码

image.png

上述代码中,我们声明了一个变量computerPushImage,存储系统出牌的规则,然后构建了系统出牌的样式。

当然系统默认出牌我们设置为一张默认的图片,后面再添加交互让它随机出牌。

未完待续

由于本章内容较多,我们将分为几章进行,下一章我们将继续完成样式部分内容。


相关文章
|
iOS开发
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)(3)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)
167 0
|
前端开发 数据处理 iOS开发
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)(2)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)
96 0
|
iOS开发 Kotlin 容器
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)(1)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)
131 0
|
存储 缓存 前端开发
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(四)(2)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(四)
134 0
|
前端开发 Swift iOS开发
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(四)(1)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(四)
222 0
|
存储 PHP Swift
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(三)(2)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(三)
173 0
|
前端开发 iOS开发
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(三)(1)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(三)
163 0
|
5天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
66 17
|
2天前
|
JSON 供应链 搜索推荐
淘宝APP分类API接口:开发、运用与收益全解析
淘宝APP作为国内领先的购物平台,拥有丰富的商品资源和庞大的用户群体。分类API接口是实现商品分类管理、查询及个性化推荐的关键工具。通过开发和使用该接口,商家可以构建分类树、进行商品查询与搜索、提供个性化推荐,从而提高销售额、增加商品曝光、提升用户体验并降低运营成本。此外,它还能帮助拓展业务范围,满足用户的多样化需求,推动电商业务的发展和创新。
17 5
|
1天前
|
移动开发 安全 搜索推荐
圈子社交系统APP,同城本地圈子论坛开发,让身边的人沟通更加紧密
圈子社交系统APP是一款基于社交网络的移动应用,用户可创建、加入和管理兴趣圈子。主要功能包括:动态分享与交流、实时聊天、会员体系与身份认证、活动策划等。该APP注重个性化定制、社交关系深化、隐私安全及跨平台互联,提供丰富的社交体验。