Ejercicio Linq funciones

Vamos a crear un juego de torretas y vamos a crear la clase Torreta que tiene como propiedades:

Nombre

Posicion(x,y) struct con propiedades x e y

Rango (int)

Ataque(int)

Sería conveniente, a efectos de lo que vamos a hacer después, sobreescribir los métodos toString() Equals() y getHashCode()

Vamos a crear una lista de torretas que van a abarcar un terreno de 400×400. Tendremos un cuadrado de 4×4 torretas colocadas en las posiciones

(50,50) (150,50) (250,50)(350,50)

(50,150) (150,150) (250,150)(350,150)

(50,250) (150,250) (250,250)(350,250)

(50,350) (150,350) (250,350)(350,350)

El nombre será correlativo (Torreta1,Torreta2,…) el rango de todas es de 100 y el ataque es la suma de las coordenadas dividido por 10.

A partir de aquí:

Mostrar todas las torretas que tienen potencia de ataque superior a 50

Mostrar todas las torretas que tienen potencia de ataque superior a 50 en la primera fila

Mostrar las torretas ordenadas por ataque y después por la posición x (primera coordenada).

¿Cual es la media de ataque de todas las torretas?

¿Cual es la torreta de menos ataque?

¿Hay alguna torreta que tenga una potencia de ataque mayor de 60? (Si o no, no buscarla)

Mostrar las torretas que puedan atacar a la posición (200,200). Calcular la potencia de ataque que converge en ese punto.