-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaula12.swift
149 lines (143 loc) · 4.22 KB
/
aula12.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
import Foundation
func DistanciaPontos (ponto1 : Ponto, ponto2: Ponto) -> Float{
let dy = ponto1.x - ponto2.x
let dx = ponto1.y - ponto2.y
return sqrt(dy*dy + dx*dx)
}
protocol Forma {
func area() -> Float
func incluiPonto(_ ponto: Ponto) -> Bool
mutating func move(x: Float, y:Float)
func incluiForma (_ outra: Forma) -> Bool
}
struct circulo:Forma {
var centro:Ponto
var raio:Float
func incluiForma(_ outra: Forma) -> Bool {
if outra is Ponto {
let pto = outra as! Ponto
return incluiPonto(pto)
}
if outra is circulo {
let circ = outra as! circulo
if DistanciaPontos(ponto1: circ.centro, ponto2: centro)+circ.raio < raio {
return true
}
}
if outra is Retangulo {
let ret = outra as! Retangulo
let diagonal = sqrt(ret.ladoMaior*ret.ladoMaior + ret.ladoMenor*ret.ladoMenor)
if diagonal < raio {
return true
}
return false
}
func area() -> Float {
return 3.14*raio*raio
}
mutating func move(x: Float, y: Float) {
centro.x = centro.x + x
centro.y = centro.y + y
}
func incluiPonto(_ ponto:Ponto) -> Bool {
let distancia = DistanciaPontos(ponto1: ponto, ponto2: centro)
if distancia < raio {
return true
}
return false
}
}
struct Ponto {
var x:Float
var y:Float
mutating func move(x: Float, y: Float) {
self.x = self.x + x
self.y = self.y + y
}
func incluiPonto(x:Float, y:Float) -> Bool {
if self.x == x && self.y == y {
return true
}
return false
}
}
struct Retangulo:Forma {
var ladoMaior:Float
var ladoMenor:Float
var centro:Ponto
func incluiForma(_ outra: Forma) -> Bool {
if outra is Ponto {
let pto = outra as! Ponto
if DistanciaPontos(ponto1: centro, ponto2: pto) < ladoMenor {
return true
}
return false
}
if outra is circulo {
}
}
mutating func move(x:Float, y:Float){
centro.x = centro.x + x
centro.y = centro.y + y
}
func area() -> Float {
return self.ladoMaior*self.ladoMenor
}
func igual(retangulo2: Retangulo) -> Bool {
if self.ladoMaior == retangulo2.ladoMaior && self.ladoMenor == retangulo2.ladoMenor {
return true
}
return false
}
func distancia(Ponto:Ponto) -> Float {
let distanciax = centro.x - Ponto.x
let distanciay = centro.y - Ponto.x
return sqrt(distanciax*distanciax+distanciay*distanciay)
}
func incluiPonto(_ ponto: Ponto) -> Bool {
let dx = ponto.x - centro.x
let dy = ponto.y - centro.y
if (dx*dx <= ladoMaior*ladoMaior || dx*dx <= ladoMenor*ladoMenor) && (dy*dy <= ladoMaior*ladoMaior || dy*dy <= ladoMenor*ladoMenor) {
return true
}
return false
}
}
let r2 = Retangulo(ladoMaior: 2, ladoMenor: 3, centro: Ponto(x:0,y:0))
let r = Retangulo(ladoMaior: 2, ladoMenor: 3, centro: Ponto(x: 0, y: 0))
let area:Float = r.area()
print(area)
if r.igual(retangulo2: r2) == true {
print("Show")
}
/*Defina um struct Pokemon que guarda algumas informações relevantes de um pokemon:
- nome
- tipo (um ou dois)
- pontos de HP totais
- pontos de HP atuais
- uma lista de ataques, que incluem um nome e um dano básico
Um pokemon deve ser capaz de verificar se outro pokemon tem um tipo em comum com ele e deve ser capaz de atacar outro pokemon com um determinado ataque, infligindo dano no pokemon atacado.*/
/*struct Ataques {
let nomeAtaque:String
let dano:Int
}
struct Pokemon {
var nome:String
var tipo:Int
let totalHP:Int
var atualHP:Int
var ataques:[Ataques]
func igual(Pokemon: Pokemon) -> Bool {
if tipo == Pokemon.tipo {
return true
}
return false
}
mutating func atado( Ataque: Ataques) {
self.atualHP = self.atualHP - Ataque.dano
}
}
var charmander = Pokemon("Charmander", 1, 300, 300, Ataques[(nomeAtaque: "Bola de F" ),()])
*/
//let pto = outra as! Ponto
//if let pto = outra as? Ponto