package main

import (
	"fmt"
	"math"
)

type Circle struct {
	x, y, r float64
}

type Rectangle struct {
	x1, y1, x2, y2 float64
}

func (c Circle) area() float64 {
	return math.Pi * c.r * c.r
}

func (r Rectangle) area() float64 {
	l := r.x2 - r.x1
	w := r.y2 - r.y1
	return l * w
}

type Person struct {
	Name string
}

func (p *Person) Talk() {
	fmt.Println("Hi, my name is", p.Name)
}

type Android struct {
	Person
	Model string
}

type Character struct {
	On    bool
	Ammo  int
	Power int
}

func (c *Character) Shoot() bool {
	if c.On == false {
		return false
	} else if c.Ammo > 0 {
		c.Ammo--
		return true
	} else {
		return false
	}
}

func (c *Character) RideBike() bool {
	if c.On == false {
		return false
	} else if c.Power > 0 {
		c.Power--
		return true
	} else {
		return false
	}
}

func main() {
	/*
		rect := Rectangle{x1: 0, y1: 0, x2: 10, y2: 10}
		circ := Circle{x: 0, y: 0, r: 5}
		fmt.Println("Rectangle area:", rect.area())
		fmt.Println("Circle area:", circ.area())
	*/
	/*
		a := new(Android)
		a.Name = "Fedor"
		a.Person.Talk()
		a.Talk()
	*/
	ch := Character{true, 5, 10}

	fmt.Println(ch.Shoot(), ch.Ammo, ch.Power)
	fmt.Println(ch.Shoot(), ch.Ammo, ch.Power)
}
