--------------------------------------------------------
Παράδειγμα if - else: Έλεγχος Υγείας Παίκτη

Πώς λειτουργεί;
Η μεταβλητή health ορίζει την υγεία του παίκτη.
Η μέθοδος CheckHealth() ελέγχει αν ο παίκτης έχει ζωή (if health > 0) και εμφανίζει αντίστοιχο μήνυμα.
Η μέθοδος TakeDamage(int damage) αφαιρεί πόντους από τη ζωή του παίκτη και επανελέγχει την κατάσταση.

using UnityEngine;

public class PlayerHealth : MonoBehaviour
{
    public int health = 50; // Αρχική υγεία

    void Start()
    {
        CheckHealth();
    }

    void CheckHealth()
    {
        if (health > 0)
        {
            Debug.Log("Ο παίκτης είναι ζωντανός με " + health + " ζωή.");
        }
        else
        {
            Debug.Log("Ο παίκτης έχασε.");
        }
    }

    public void TakeDamage(int damage)
    {
        health -= damage;
        Debug.Log("Ο παίκτης δέχθηκε " + damage + " ζημιά. Υπολειπόμενη ζωή: " + health);

        CheckHealth();
    }
}
--------------------------------------------------------
Παράδειγμα switch: Σύστημα Όπλων

Πώς λειτουργεί;
Η μεταβλητή weapon καθορίζει το όπλο που κρατά ο παίκτης.
Η μέθοδος SelectWeapon(int weaponType) χρησιμοποιεί switch για να ελέγξει τον αριθμό του όπλου και να εμφανίσει το αντίστοιχο μήνυμα.
Η μέθοδος ChangeWeapon(int newWeapon) επιτρέπει την αλλαγή του όπλου και καλεί ξανά το SelectWeapon().

using UnityEngine;

public class WeaponSelector : MonoBehaviour
{
    public int weapon = 1; // Επιλογή όπλου

    void Start()
    {
        SelectWeapon(weapon);
    }

    void SelectWeapon(int weaponType)
    {
        switch (weaponType)
        {
            case 1:
                Debug.Log("Έχεις σπαθί!");
                break;
            case 2:
                Debug.Log("Έχεις τόξο!");
                break;
            case 3:
                Debug.Log("Έχεις μαγικό ραβδί!");
                break;
            case 4:
                Debug.Log("Έχεις ασπίδα!");
                break;
            default:
                Debug.Log("Άγνωστο όπλο!");
                break;
        }
    }

    // Πρόσθετη μέθοδος για αλλαγή όπλου
    public void ChangeWeapon(int newWeapon)
    {
        weapon = newWeapon;
        SelectWeapon(weapon);
    }
}

--------------------------------------------------------
Παράδειγμα for: Δημιουργία Εχθρών

Πώς λειτουργεί;
Η μεταβλητή numberOfEnemies καθορίζει πόσους εχθρούς θα δημιουργήσουμε.
Η μέθοδος SpawnEnemies() περιέχει έναν βρόχο for που:
Ξεκινά από το 1 (i = 1).
Εκτελείται μέχρι το numberOfEnemies (i <= numberOfEnemies).
Σε κάθε επανάληψη, εμφανίζει στην κονσόλα ένα μήνυμα ότι δημιουργήθηκε ένας νέος εχθρός.
Η Start() καλεί την SpawnEnemies() όταν ξεκινήσει το παιχνίδι.

using UnityEngine;

public class EnemySpawner : MonoBehaviour
{
    public int numberOfEnemies = 5; // Πόσους εχθρούς θα δημιουργήσουμε;

    void Start()
    {
        SpawnEnemies();
    }

    void SpawnEnemies()
    {
        for (int i = 1; i <= numberOfEnemies; i++) // Ξεκινάμε από 1 και πάμε μέχρι το numberOfEnemies
        {
            Debug.Log("Δημιουργήθηκε εχθρός #" + i);
        }
    }
}

--------------------------------------------------------
Παράδειγμα while: Χρονόμετρο που Μετράει

Πώς λειτουργεί;
Δημιουργούμε μια μεταβλητή counter με αρχική τιμή 0.
Χρησιμοποιούμε while (counter < 3), που σημαίνει ότι ο βρόχος θα εκτελείται όσο το counter είναι μικρότερο από 3.
Σε κάθε επανάληψη:
Εκτυπώνεται το μήνυμα Μετράμε: X στο Console.
Αυξάνεται το counter κατά 1.
Όταν το counter φτάσει το 3, ο βρόχος σταματά και εμφανίζεται το μήνυμα "Η μέτρηση ολοκληρώθηκε!".

using UnityEngine;

public class CountdownTimer : MonoBehaviour
{
    void Start()
    {
        int counter = 0; // Αρχική τιμή του μετρητή

        while (counter < 3) // Όσο το counter είναι μικρότερο από 3
        {
            Debug.Log("Μετράμε: " + counter);
            counter++; // Αυξάνουμε το counter
        }

        Debug.Log("Η μέτρηση ολοκληρώθηκε!");
    }
}

--------------------------------------------------------
Βρόχοι (Loops): do-while

int number = 0;
do
{
    Debug.Log("Αυτό θα εκτελεστεί τουλάχιστον μία φορά!");
    number++;
} while (number < 3);


--------------------------------------------------------
Παράδειγμα do-while: Αντίστροφη Μέτρηση

Πώς λειτουργεί;
Η μεταβλητή number αρχικοποιείται με 0.
Ο βρόχος do εκτελείται μία φορά, ανεξάρτητα από την αρχική τιμή της μεταβλητής.
Σε κάθε επανάληψη:
Εκτυπώνεται η τρέχουσα τιμή του number.
Η μεταβλητή number αυξάνεται κατά 1.
Ο βρόχος συνεχίζεται έως ότου number < 3.
Όταν η συνθήκη γίνει ψευδής, εκτυπώνεται "Η μέτρηση ολοκληρώθηκε!".

using UnityEngine;

public class DoWhileExample : MonoBehaviour
{
    void Start()
    {
        int number = 0; // Αρχική τιμή του αριθμού

        do
        {
            Debug.Log("Η τιμή του number είναι: " + number);
            number++; // Αυξάνουμε την τιμή του number
        } while (number < 3); // Επαναλαμβάνεται όσο το number είναι μικρότερο από 3

        Debug.Log("Η μέτρηση ολοκληρώθηκε!");
    }
}

--------------------------------------------------------
Παράδειγμα στις συναρτήσεις: Χρήση Συναρτήσεων στο Unity

Πώς λειτουργεί;
Η SayHello() → Εκτυπώνει ένα μήνυμα καλωσορίσματος με το όνομα του παίκτη.
Η TakeDamage(int damage) → Μειώνει την υγεία του παίκτη και εμφανίζει το νέο ποσό.
Η Heal(int amount) → Αυξάνει την υγεία του παίκτη.

using UnityEngine;

public class Player : MonoBehaviour
{
    public string playerName = "Alex"; // Όνομα παίκτη
    public int health = 100; // Υγεία παίκτη

    void Start()
    {
        SayHello(); // Καλούμε τη συνάρτηση όταν ξεκινάει το παιχνίδι
        TakeDamage(20); // Ο παίκτης δέχεται ζημιά 20
        Heal(10); // Ο παίκτης θεραπεύεται κατά 10
    }

    void SayHello()
    {
        Debug.Log("Γεια σου, " + playerName + "! Καλώς ήρθες στο παιχνίδι!");
    }

    void TakeDamage(int damage)
    {
        health -= damage;
        Debug.Log(playerName + " δέχθηκε " + damage + " ζημιά. Υγεία: " + health);
    }

    void Heal(int amount)
    {
        health += amount;
        Debug.Log(playerName + " θεραπεύτηκε κατά " + amount + ". Νέα υγεία: " + health);
    }
}

--------------------------------------------------------
Παράδειγμα στις συναρτήσεις με επιστροφή τιμής: Υπολογιστής Ζημιάς με Επιστροφή Τιμής

Υπολογίζει τη ζημιά με βάση τη δύναμη του όπλου και των εχθρών.
Χρησιμοποιεί συναρτήσεις που επιστρέφουν τιμές.

Πώς λειτουργεί;
Η CalculateDamage(int baseDamage, int weaponPower):
Δέχεται δύο ακέραιους αριθμούς (βάση ζημιάς και δύναμη όπλου).
Επιστρέφει το συνολικό damage που προκαλείται.
Η ApplyDamage(int currentHealth, int damage):
Δέχεται την τρέχουσα υγεία και τη ζημιά.
Επιστρέφει τη νέα τιμή της υγείας του παίκτη.


using UnityEngine;

public class DamageCalculator : MonoBehaviour
{
    void Start()
    {
        int totalDamage = CalculateDamage(10, 5); // Damage: 10, Weapon Power: 5
        Debug.Log("Η συνολική ζημιά είναι: " + totalDamage);

        int playerHealth = 100;
        playerHealth = ApplyDamage(playerHealth, totalDamage);
        Debug.Log("Η υγεία του παίκτη μετά την επίθεση: " + playerHealth);
    }

    // Συνάρτηση που επιστρέφει τη συνολική ζημιά
    int CalculateDamage(int baseDamage, int weaponPower)
    {
        return baseDamage + weaponPower;
    }

    // Συνάρτηση που αφαιρεί ζημιά από την υγεία του παίκτη και επιστρέφει τη νέα υγεία
    int ApplyDamage(int currentHealth, int damage)
    {
        int newHealth = currentHealth - damage;
        return newHealth;
    }
}


--------------------------------------------------------
Παράδειγμα OOP: Σύστημα Παίκτη με Ζημιά και Θεραπεία

Θα δημιουργήσουμε μία κλάση Player, η οποία θα διαχειρίζεται:
Το όνομα του παίκτη.
Την υγεία του παίκτη.
Μια μέθοδο TakeDamage(int damage), η οποία μειώνει την υγεία.
Μια μέθοδο Heal(int amount), η οποία αυξάνει την υγεία.





using UnityEngine;

public class Player
{
    public string name; // Όνομα παίκτη
    public int health; // Υγεία παίκτη

    // Constructor - Δημιουργία παίκτη με όνομα και αρχική υγεία
    public Player(string playerName, int playerHealth)
    {
        name = playerName;
        health = playerHealth;
    }

    // Συνάρτηση που αφαιρεί ζωή από τον παίκτη
    public void TakeDamage(int damage)
    {
        health -= damage;
        Debug.Log(name + " πήρε " + damage + " ζημιά! Υπολειπόμενη ζωή: " + health);
        
        if (health <= 0)
        {
            Debug.Log(name + " έχασε το παιχνίδι!");
        }
    }

    // Συνάρτηση που θεραπεύει τον παίκτη
    public void Heal(int amount)
    {
        health += amount;
        Debug.Log(name + " θεραπεύτηκε κατά " + amount + ". Νέα υγεία: " + health);
    }
}




Πώς χρησιμοποιούμε την κλάση σε ένα Unity Script
Για να δημιουργήσουμε έναν παίκτη και να τον διαχειριστούμε μέσα στην Unity, θα χρησιμοποιήσουμε ένα MonoBehaviour script.

using UnityEngine;

public class GameManager : MonoBehaviour
{
    void Start()
    {
        // Δημιουργούμε δύο παίκτες με διαφορετικά ονόματα και υγεία
        Player player1 = new Player("Alex", 100);
        Player player2 = new Player("Enemy", 80);

        // Ο Alex δέχεται ζημιά 20
        player1.TakeDamage(20);

        // Ο Enemy δέχεται ζημιά 50
        player2.TakeDamage(50);

        // Ο Alex θεραπεύεται κατά 15
        player1.Heal(15);
    }
}




--------------------------------------------------------
