I design a game of rock,scissor,and paper,however,it differs with the requirement of Paul's,but I think it is my first design authentically,so I share with everybody.
May it is not so good,I love it at least,that's enough.
import SwiftUI
struct ContentView: View {
//2.make an array of String,and we need it refreshes after end every time.
@State var gamechoice=["✊","✂️","👋"].shuffled()
//3.产生一个随机数
@State var number = Int.random(in:0...2)
@State var click1=true
@State var click2=true
@State var click3=true
//4.刷新数组和序号
func gameagain(){
gamechoice.shuffle()
number=Int.random(in:0...2)
}
func result1()->String{
if gamechoice[number]=="✊"{
return "👋"
}else if gamechoice[number]=="✂️"{
return "✊"
}else {
return "✂️"
}
}
func result2()->String{
if gamechoice[number]=="✊"{
return "✂️"
}else if gamechoice[number]=="✂️"{
return "👋"
}else {
return "✊"
}
}
func same(){
if click1==true{
click2=true
click3=true
}
}
var body: some View {
//1.place three Text,one for computer,one for winner,the last one for loser.
VStack{
Button(action:{
click1.toggle()
same()
gameagain()
}){
Text(click1 ? "电脑":gamechoice[number])
.usemyview()
}
Section{
HStack(spacing:85){
Button(action:{
click2.toggle()
// gameagain()
}){
Text(click2 ? "winner":result1())
.usemyview()
}
Button(action:{
click3.toggle()
}){
Text(click3 ? "loser":result2())
.usemyview()
}
}
}
}
}
}
struct myview:ViewModifier{
func body(content: Content) -> some View {
content
.font(.title)
.frame(width: 80, height: 30, alignment: /@START_MENU_TOKEN@/.center/@END_MENU_TOKEN@/)
.padding()
.foregroundColor(.black)
.background(Color.green)
.clipShape(RoundedRectangle(cornerRadius:20))
}
}
extension View{
func usemyview()->some View{
self.modifier(myview())
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}