Logo

Főoldal

Blog

Elmélet

3D Studio

Adatvédelmi nyilatkozat

GY.I.K.

Házirend

Szerző: Marosi Csaba / marosi.csaba@3d-studio.hu

DiscordGitHubLinkedIn
Developedia
Developedia
/Feladatgyűjtemény
Feladatgyűjtemény
/Primitív típusok és műveleteik
Primitív típusok és műveleteik
Primitív típusok és műveleteik

Primitív típusok és műveleteik

Az alábbi feladatok megoldhatók Unity-n belül, de akár C# parancssori alkalmazásban is.

‣
Ha a Unity-n belül MonoBehaviour komponensként készíted el a megoldást, akkor…

Szükséged van a megfelelő programkönyvtárra (névtérre). Tehát a file elején mindenképp írd ki: using UnityEngine;

Ekkor a bemenő értékek beolvasását végezheted a [SerializeField] tagváltozókkal.

A kimenő adatokat pedig kiírathatod Debug.Log() metódus segítségével vagy felvehetsz erre a célra is [SerializeField] tagváltozókat.

A Unity matematikai könyvtárát Mathf néven éred el.

Ne feledd el, hogy megírt MonoBehaviour scripteket, hozzá kell adni egy GameObject-hez!

‣
Ha a parancssori C# alkalmazáson belül készíted el a megoldást, akkor…

Szükséged van a megfelelő programkönyvtárra (névtérre). Tehát a file elején mindenképp írd ki: using System;

Ekkor a bemenő értékek beolvasását végezheted a Console.ReadLine() metódussal.

A kimenő adatokat pedig kiírathatod Console.WriteLine() segítségével.

A C# matematikai könyvtárát Math néven éred el.

using UnityEngine;

‣
A megoldások némelyikében használom az OnValidate() Unity üzenetmetódust.

Ehelyett használhatsz Start() metódust is, ami az objektum létrejöttekor fut le.

Vagy, olvasd el az OnValidate()-ről szóló elméleti leckét: Az OnValidate metódusAz OnValidate metódus.

Számok (int, float) és a string típus

‣
Egyszerű számológép

Írj programot, ami kiszámolja a és b lebegőpontos (float) számok

  • összegét,
  • különbségét,
  • szorzatát és
  • hányadosát!
‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
‣
Hol lehet mindennek haszna a játékfejlesztésben?

A változók, egyszerű típusok és a matematika alapműveletei a számítástechnika alapjai. A programozás minden területén visszaköszönnek és ez alól a játékfejlesztés sem kivétel. Begyakorlásuk és magabiztos használatuk elengedhetetlen bármiféle szoftvert is kíván készíteni az ember.

Példák:

Összeadás: A kardom támadópontjához hozzáadódik a talizmánom támadópontja.

Kivonás: Minden esetben ha találat ér, az életem csökken valamennyivel.

Szorzás: A gyors sorozatban leadott támadással nő a sebzésem (Combo). Minden újabb ütéssel mondjuk 1.1-szerese lesz az előzőnek.

Osztás: Egy RPG játékban 4 fős csapatom talál egy csirkecombot, ami képes 100 életet gyógyítani. Ezt eldönthetem, hogy kik eszik meg. Ha pl. csak a mágus és a tolvaj eszik, akkor ők ketten gyógyulnak 50-50 életpontotat, ha minden bajtárs egyformán kap a zsákmányból, akkor mindenki 25-öt gyógyul.

‣
Hányados és maradék

Írj programot, ami kiírja a, és b egész (int) számok egész hányadosát és osztás utáni maradékát!

‣
Példa

Bemenet: 14, 5. Kimenet: 2, 4 (Mivel 14-ben az 5 megvan 2-szer. Maradék, a 4.)

Bemenet: 23, 3. Kimenet: 7, 2 (Mivel 23-ben az 3 megvan 7-szer. Maradék, a 2.)

Bemenet: 4, 66. Kimenet: 0, 4 (Mivel 4-ben az 66 megvan 0-szor. Maradék, a 4.)

‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
‣
Öt szám átlaga

Írj programot, ami kiszámolja 5 egész szám pontos átlagát.

‣
Megoldás (Unity komponens)
class TextConcatenation : MonoBehaviour
{ 
    [SerializeField] int i1, i2, i3, i4, i5;  // Bemenetek
    [SerializeField] float mean;              // Kimenet
    
    void OnValidate()
    { 
        int sum = i1 + i2 + i3 + i4 + i5;
				mean = sum / 5f;
    }
}
‣
Megoldás (Parancssori)
int n1 = 4, n2 = 9, n3 = 12, n4 = -2, n5 = 6;

// Számítások elvégzése:
int sum = n1 + n2 + n3 + n4 + n5;
float mean = sum / 5f;

// Kiíratás:
Console.WriteLine(mean);
‣
Hol lehet mindennek haszna a játékfejlesztésben?

Pl: Egy stratégia játékban egy szamban tároljuk az embereink morálszintjét. Ha az emberek álag moral-ja egy bizonyos szint alá csökken, lázadás tör ki.

‣
Szöveg összefűzés

Írj programot, ami összefűz 5 string-et szóközzel elválasztva!

‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
string s1 = "Never", s2 = "gonna", s3 = "give", s4 = "you", s5 = "up";

// Számítások elvégzése:
string concatenated = s1 + " " + s2 + " " + s3 + " " + s4 + " " + s5;

// Kiíratás:
concatenated.WriteLine(full);
‣
Összeadás szövegesen

Írj programot, ami kiírja a, és b egész int számok összegét az művelettel együtt!

Például: Ha a bemenet 4 és 7, akkor a következő legyen a kimeneti string változó tartalma:

”4 + 7 = 11”

‣
Megoldás (Unity komponens)
class EvenTester : MonoBehaviour
{
    [SerializeField] int a, b;      // Bemenetek 
    
    void OnValidate()
    {
        float sum = a + b;
        string text= $"{a} + {b} = {sum}";
				Debug.Log(text);
    }
}
‣
Megoldás (Parancssori)

A bemeneti változókat a konzolról olvasd be!

// Beolvasás:
Console.WriteLine("Insert Number 1!");
string line1 = Console.ReadLine();
float a = float.Parse(line1);

Console.WriteLine("Insert Number 2!");
string line2 = Console.ReadLine();
float b = float.Parse(line2);

// Számítások elvégzése:
float sum = a + b;
string textAnswer = $"{a} + {b} = {sum}";

// Kiíratás:
Console.WriteLine(textAnswer);
‣
Hol lehet mindennek haszna a játékfejlesztésben?

Pl.: Ki akarjuk íratni a játékosnak mennyit fog sebezni a következő ütése. Ebbe bele van számolva a karakter alapsebzése és különböző módosítók amik a felszereléséből jönnek: Sebzés: 4 + 5 (Goblinölő kard) + 3 (Legendás bocskor) = 12

‣
Osztás szövegesen

Írj programot, ami bemeneti váltókban kap két egész számot és kiírja a két szám osztásának egész eredményét és maradékát!

Például: Ha a bemenet 38 és 5, akkor ezt írja ki: ”38-ban 5 megvan 7-szer, maradék: 3”

A toldalékolás helyességével ne foglalkozzatok! (Mindegy hogy -ban vagy -ben.)

‣
Megoldás (Unity komponens)
class Divider : MonoBehaviour
{
    [SerializeField] int a, b;      // Bemenetek 
    
    void Start()
    {
        int quotient = a / b;
        int remainder = a % b;

        string text = $"{a}-ben a {a} megvan {quotient}-szer, maradék a(z) {remainder}.";
				Debug.Log(text);
    }
}
‣
Megoldás (Parancssori)
‣
Kör Adatai

Írj programot, ami egy kör sugara alapján kiszámolja annak kerületét és területét.

Keru¨let=2r×πKerület = 2r × πKeru¨let=2r×π

Teru¨let=r2×πTerület = r^2 × πTeru¨let=r2×π

‣
Megoldás (Unity komponens)
class Circle : MonoBehaviour
{
    [SerializeField] float radius;               // Bemenet
    [SerializeField] float circumference, area;  // Kimenet

    void OnValidate()
    {
        float pi = 3.14f; // Pi értékét felvesszük segédváltozóba
        circumference = 2 * radius * pi;  // Kerület 
        area = radius * radius * pi;  // Terület 
    }
}
‣
Megoldás (Parancssori)
‣
Értékcsere

Írj programot, ami kicseréli két string típusú változó értékét!

‣
Megoldás
string a = "John Travolta";
string b = "Nicolas Cage";

string c = a;   // Segédváltozó
a = b;
b = c;
‣
Értékcsere trükkösen

Írj programot, ami kicseréli két int típusú változó értékét! úgy, hogy egyéb változót nem használ hozzá.

‣
Tipp

Vizsgáld meg jól, milyen különbségek vannak ez és az előző felada közt. Hátha segít. 😉

‣
Megoldás
int a = 3;
int b = 8;

a += b;   // a = a + b = 3 + 8 = 11
b -= a;   // b = b - a = 8 - 11 = -3
b = -b;   // b = -(-3) = 3
a -= b;    // a = a - b = 11 - 3 = 8

// Minden számra működik.
// Próbáld ki nyugodtan!

Van egy másik (egyszerűbb) megoldás is:

(a, b) = (b, a);   // De ezt nem tanultuk

// Ennek teljes megértéséhez viszont ismerni kéne 
// a tuple és a deconstructor programozási fogalmakat,
//  amikkel jelen kúrzuson nem foglalkozunk.
‣
Vedd át a számítógép szerepét!

Gondolkodj úgy mint a számítógép és fejben számold ki, hogy mi lesz az x kezdetű változók értéke, és típusa miután végrehajtjuk a következő kódot!

Kiegészítő anyag: A var kulcsszó behelyettesíthető bármilyen típus helyett lokális változó deklarálásánál, ha egyből definiáljuk is a változót. Ekkor nincs feltétlenül szükség kiírni a típust, hiszen az egyből kiderül az értékadásból.

int a = 2, b = 4, c = 5;
string d = "D" , e = "E", f = "F";

var x1 = a + b + c;
var x2 = a + b + e;
var x3 = b + d + c;
var x4 = f + a + b;

var x5 = a + b * c;
x5 /= 8;
var x6 = x5 / b;
x6++;
var x7 = x6 / 2f;
x7--;
var x8 = -1 * x7;
x8 *= x8;
‣
Megoldás

x1 = 11 (int) x2 = “6E” (string) x3 = “4D5” (string) x4 = “F24” (string) x5 = 2 (int) x6 = 1 (int) x7 = -0.5f (float) x8 = 0.25f (float)

Az eldöntendő típus: bool

‣
Példák a valós életből

Találj ki példákat, a valós életből, szoftver- vagy játékfejlesztélsből arra, hogy hol használjuk a logikai ÉS, VAGY, XOR (kizáró vagy) műveletket!

‣
Oszthatóság teszt

Írj programot, ami megadja egy bemeneti egész számról, hogy maradék nélkül osztható-e

  • 7-tel,
  • 15-gyel és
  • 99-cel!
‣
Példa

Bemenet:

451

Kimenet:

Osztható 7-tel: true Osztható 15-tel: false Osztható 99-cel: false

‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
‣
Hol lehet mindennek haszna a játékfejlesztésben?

Egy hatlövetű fegyver kódját írjuk épp, amit minden 6. lövés után tölteni kell. Ez ugyanúgy a lövés gomb hatására történik meg. Ha számoljuk, hányszor nyomjuk meg a lövés gombot és ez a szám 7-tel való oszthatóságát teszteljük ennek eredménye, mindig megadja, hogy éppen töltenünk kell-e.

‣
Paritás teszt

Írj programot, ami megmondja egy bemeneti változóban megadott egész számról, hogy páros-e!

‣
Megoldás (Unity komponens)
class EvenTester : MonoBehaviour
{
    [SerializeField] int number;      // Bemenet
    [SerializeField] bool isEven;     // Kimenet
    
    void OnValidate()
    {
        isEven = number % 2 == 0;     // A szám páros ha osztva 2-vel  (% 2)
                                      // nem ad maradékot   (==0)
    }
}
‣
Megoldás (Parancssori)
// Beolvasás:
Console.WriteLine("Insert an integer number!");
string line = Console.ReadLine();
int number = int.Parse(line);


// Számítások elvégzése: 
bool isEven = number % 2 == 0; 

// Kiíratás:
Console.WriteLine("Páros: " + isEven);
‣
Általános oszthatóság teszt

Írj programot, ami megmondja egy egész számról, hogy maradék nélkül osztható-e egy másik bemeneten megadott számmal!

‣
Megoldás (Unity komponens)
class DivisibilityTester : MonoBehaviour
{
    [SerializeField] int a, b;             // Bemenetek
    [SerializeField] bool isDivisible;     // Kimenet
    
    void OnValidate()
    {
        isDivisible = a % b == 0; 
    }
}
‣
Megoldás (Parancssori)
// Beolvasás:
Console.WriteLine("Insert Number 1!");
string line1 = Console.ReadLine();
int a = int.Parse(line1);

Console.WriteLine("Insert Number 2!");
string line2 = Console.ReadLine();
int b = int.Parse(line2);

// Számítások elvégzése: 
bool isDivisible = a % b == 0; 

// Kiíratás:
Console.WriteLine($"{a} osztható {b}-vel: " + isDivisible);
‣
Pitagoraszi számhármas teszt

Írj programot, ami bekéri egy háromszög oldalainak hosszát növekvő sorrendben és kiszámolja, hogy a háromszög derékszögű-e!

Az ilyen számokat Pitagoraszi számhármasnak is nevezzük.

icon
Pitagoraszi számhármasok:

Három olyan egész szám, amiket ha oldalhosszként használunk egy háromszög megépítéséhez a keletkezett háromszög derékszögű lesz.

A Pitagorasz tétel értelmében ezen (a, b, c) számokra igaz, hogy:

a2+b2=c2a^2 + b^2 = c^2a2+b2=c2

Híres pitagoraszi számhármas például a ( 3, 4, 5 )

(3×3)+(4×4)=(5×5)(3×3)+(4×4) = (5×5)(3×3)+(4×4)=(5×5)

‣
Megoldás (Unity komponens)
class PythagoreanTest : MonoBehaviour
{ 
    // Bemeneti változók:
    [SerializeField] float a, b, c; 		 // Háromszög oldalai

    // Kimeneti változó:
    [SerializeField] bool isPythagorean; // Pitagoraszi számhármas-e
    
    void OnValidate()
    {
        // Pitagorasz-tétel alkalmazása:
        isPythagorean = a * a + b * b == c * c;
    }
}
‣
Megoldás (Parancssori)
‣
🦇 Vámpír árus 🦇

Egy különös csuklyás árussal találkozunk az út szélén. Az árus elmondja, hogy ő nem hétköznapi kereskedő. Nem csak aranyat fogad el fizetségül hanem vért is. Minden aranypénz helyett elfogad 5 HP-t is. (HP = Health Point = életpont). Egy árucikkért csak aranyban vagy csak vérben fizethetünk. Keverni nem tudunk.

3 pontékét árul a következő árakon

  • Bunkók buzogánya: 10 arany
  • Trükkös tőr: 4 arany
  • Vámpírfog: 13 arany

Azt megengedjük, hogy elfogyjon minden pénzünk, de azt nem, hogy elfogyjunk minden HP-nk és meghaljunk egy árucikkért.

Írj programot, ami a következő változókat bekéri az aranyunk és a és HP-nk mennyiségét, majd ezek alapján kiírja minden egyes árucikkről, hogy meg tudjuk-e venni!

‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
‣
Rugalmas vámpír árus

Újra találkozunk az árussal aki éhesebb, mint valaha, ezért hajlandó kicsit engedni a korábbi szabályain.

Oldd meg az előző feladatot azzal a különbséggel, hogy már lehet vegyíteni az egy árucikkért megvételére használt fizetőeszközöket!

Pl.: 10 aranyat érő árucikket már meg lehet venni mondjuk 8 aranyért és 10 HP-ért.

Ezúttal adj választ arra is, hogy mindent meg tudsz-e venni!

‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
‣
Mikor ér ide?

Írj programot, ami kiírja, hogy mennyi ideig tart egy ellenfélnek, hogy elérjen hozzánk.

A program 4 számot kér be

  • float dx: X tengely mentén hány méter távol van tőlünk az ellenfél.
  • float dy: Y tengely mentén hány méter távol van tőlünk az ellenfél.
  • float enemySpeed: Az ellenfél sebessége. (m/s-ban)
‣
Segítség

Pitagorasz tétel:

Egyenletes mozgás

a2+b2=c2a^2 + b^2 = c^2a2+b2=c2

v=s/tv = s/tv=s/t

t=s/vt = s/vt=s/v

‣
Megoldás (Unity komponens)
class HowMuchTime : MonoBehaviour
{
    [SerializeField] float dx, dy, speed;   // Bemenetek
    [SerializeField] float time;            // Kimenet

    void OnValidate()
    {

        // Pitagorasz rétel
        float distanceSquare = (dx * dx) + (dy * dy);
        float distance = Mathf.Sqrt(distanceSquare);

        time = distance / speed;
    }
}
‣
Megoldás (Parancssori)
‣
Stratégiai kártyajáték

Stratégiai kártyajátékot készítünk, amiben minden egyes kártyának megvannak a feltételei, hogy mikor játszhatók ki.

A következő kártyák vannak a kezemben:

  • Bunkók buzogánya
  • Kijátszása 3 manába kerül. Ha ennél kevesebb van, nem játszható ki. Emellett feltétel, hogy az ellenfél ne legyen ember és hogy az energiánk nagyobb legyen 5-nél.

  • Trükkös tőr
  • Ingyen (Mana felhasználása nélkül) kijátszható akkor, ha kevesebb életpontom van, mint az ellenfélnek, vagy pedig akkor, ha kevesebb vagy pont annyi életünk van, mint a maximális életpontjaink fele. Mivel a tőr a gazdáját is sebzi, semmiképp nem játszató ki ha több 10 vagy annál kevesebb az életpontunk.

  • Vámpírfog
  • Kijátszása 2 manába kerül vagy, ha nincs annyik akkor 5 életpontba. Akkor játszható ki ha az ellenfél ember vagy az energiánk legalább 3. Ha maximum életünk van, a lap nem kijátszható.

Írj programot, ami a szükséges bemeneti információkból kiszámolja, minden lapra, külön külön, hogy kijátszható-e!

‣
Segítség: A bemenetek

A feladat a bementő paraméterek megadásával kezdődik:

float mana = 10;           // Manaánk menynisége
int hp = 50;               // Életpontjaink 
int maxHp = 100;           // Maximum életpontunk 
float energy = 2.5f;       // Energiánk menynisége 
int enemyHp = 25;          // Ellenfél életpontjai 
bool isEnemyHuman =false;  // Ellenfél ember-e ?
‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
‣
Random Egyetem

A nagy múltú Random Egyetem különböző karainak furcsa, a kívülállók számára talán teljesen véletlenszerűnek tűnő felvételi követelményei vannak.

  • Bakli kar
  • Akkor vesznek fel, ha magasabb vagy 165 cm-nél, de nem nagyobb 200-nál és 2000-ben vagy azután születtél. Kizáró ok, ha horkolsz.

  • Plimpli kar
  • Akkor tudsz bekerülni, ha kisebb vagy 180 cm-nél vagy nagyobb 210-nél. Viszont ha a vezeték és keresztneved megegyezik instant felvesznek.

  • Tropli kar
  • Tropli Tivadar nagy ellensége volt Plimpli Petóniának ezért azt, akit a Plimpli karra felvennének azt a Tropli karon biztos nem fogadják. Emellett a lányok közül csak az járhat a karra, akinek kisebb a magassága, mint 150 cm, a fiúk közül pedig csak az, aki horkol.

Írj programot, ami a szükséges információk kitöltése után kiszámolja, minden szakra külön külön, hogy megfelelsz a követelményeknek és az eredményt kiírja a konzolra.

Első lépésnek vegyük számba milyen információk kellenek ahhoz, hogy tudjunk dönteni! és eszerint vedd fel a szükséges bemeneti változókat a megfelelő típussal!

string firstName = "Elemér";       // Keresztnév
string familyName = "Lapos";       // Vezetéknév
// ...
‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
class BasicCalculator : MonoBehaviour
{
    [SerializeField] float a, b;				// Bemeneti változók
    
    [SerializeField] float summa;       // Összeg
    [SerializeField] float difference;  // Különbség
    [SerializeField] float product;     // Szorzat
    [SerializeField] float quotient;    // Hányados

		// Az OnValidate metódus lefut automatikusan,
		// amikor bármit változtatunk a komponens inspector felületén.
    void OnValidate()
    {
        summa = a + b;
        difference = a - b;
        product = a * b;
        quotient = a / b;
    }
}
Console.WriteLine("Insert Number 1!");
string line1 = Console.ReadLine();
float a = float.Parse(line1);

Console.WriteLine("Insert Number 2!");
string line2 = Console.ReadLine();
float b = float.Parse(line2);

float sum = a + b;
float difference = a - b;
float product = a * b;
float quotient = a / b;

// Kiíratás:
Console.WriteLine("Sum:" + sum);
Console.WriteLine("Difference:" + difference);
Console.WriteLine("Product:" + product);
Console.WriteLine("Quotient:" + quotient);
class QuotientAndRemainder : MonoBehaviour
{
		// Bemeneti változók
    [SerializeField] int a;
    [SerializeField, Min(1)] int b = 1;	// Kezdő- és minimum értéket adhatunk, 
																				// hogy elkerüljük a nullával való osztást
     
    [SerializeField] int quotient;      // Hányados
    [SerializeField] int remainder;     // Maradék
   
		// Az OnValidate metódus lefut automatikusan,
		// amikor bármit változtatunk a komponens inspector felületén.
    void OnValidate()
    {
        quotient = a / b;
        remainder = a % b;
    }
}
// Beolvasás:
Console.WriteLine("Insert Number 1!");
string line1 = Console.ReadLine();
int a = int.Parse(line1);

Console.WriteLine("Insert Number 2!");
string line2 = Console.ReadLine();
int b = int.Parse(line2);

// Számítások elvégzése:
int quotient = a / b;
int remainder = a % b;

// Kiíratás:
Console.WriteLine("Quotient:" + quotient);
Console.WriteLine("Remainder:" + remainder);
class TextConcatenation : MonoBehaviour
{ 
    [SerializeField] string s1, s2, s3, s4, s5;  // Bemenetek
    [SerializeField] string concatenated;        // Kimenet
    
    void OnValidate()
    {
        // Megoldás 1:
        concatenated = $"{s1}, {s2}, {s3}, {s4}, {s5}";
        
        // Megoldás 2:
        concatenated = s1 + ", " + s2 + ", " + s3 + ", " + s4 + ", " + s5;
    }
}
// Beolvasás:
Console.WriteLine("Insert Number 1!");
string line1 = Console.ReadLine();
int a = int.Parse(line1);

Console.WriteLine("Insert Number 2!");
string line2 = Console.ReadLine();
int b = int.Parse(line2);

// Számítások elvégzése:
int quotient = a / b;
int remainder = a % b;

string textAnswer = 
	$"{a}-ben a {a} megvan {quotient}-szer, maradék a(z) {remainder}.";

// Kiíratás:
Console.WriteLine(textAnswer);
// Beolvasás:
Console.WriteLine("Insert the redius of the circle");
string line1 = Console.ReadLine();
float radius = float.Parse(line1);  // Bemeneti változó: Sugár 

// Számítások elvégzése:
float pi = 3.14f; // Pi értékét felvesszük segédváltozóba
float perimeter = 2 * radius * pi;  // Kerület 
float area = radius * radius * pi;  // Terület 

// Kiíratás:
Console.WriteLine("Perimeter: " + perimeter);
Console.WriteLine("Area: " + area);
class DivisibilityCheck : MonoBehaviour
{
	[SerializeField] int number;           // Bemeneti változó

	// Kimeneti változók
	[SerializeField] bool divisibleWith7;  // Osztható-e 7-tel
	[SerializeField] bool divisibleWith15; // Osztható-e 15-tel
	[SerializeField] bool divisibleWith99; // Osztható-e 99-cel

	void OnValidate()
	{
		// Eltároljuk, hogy a bemenetet osztva 7-tel mekkora maradékot ad:
		int remainder = number % 7;        // Modulo művelet
		divisibleWith7  = remainder == 0;  // Ha a maradék 0, akkor osztható
        
		// A következőket egy-egy sorban oldjuk meg segédváltozó nélkül:
		divisibleWith15 = number % 15 == 0;
		divisibleWith99 = number % 99 == 0;
	}
}
// Beolvasás:
Console.WriteLine("Insert Number 1!");
string line1 = Console.ReadLine();
int number = int.Parse(line1);

// Számítások elvégzése:

// Eltároljuk, hogy a bemenetet osztva 7-tel mekkora maradékot ad:
int remainder = number % 7;        // Modulo művelet
bool divisibleWith7 = remainder == 0;  // Ha a maradék 0, akkor osztható

// A következőket egy-egy sorban oldjuk meg segédváltozó nélkül:
bool divisibleWith15 = number % 15 == 0;
bool divisibleWith99 = number % 99 == 0;

// Kiíratás:
Console.WriteLine("Osztható  7-tel: " + divisibleWith7);
Console.WriteLine("Osztható 15-tel: " + divisibleWith15);
Console.WriteLine("Osztható 99-cel: " + divisibleWith99);
// Beolvasás
Console.WriteLine("Insert the shortest side!");
string line = Console.ReadLine();
float a = float.Parse(line);

Console.WriteLine("Insert the middel side!");
line = Console.ReadLine();
float b = float.Parse(line);

Console.WriteLine("Insert the longest side!");
line = Console.ReadLine();
float c = float.Parse(line);

// Számítások elvégzése
bool isPythagorean = a * a + b * b == c * c;

// Kiíratás
Console.WriteLine("Is right triangle: " + isPythagorean);
using UnityEngine;

class VampireMerchant: MonoBehaviour
{
    [SerializeField] int gold, hp;                               // Bemenetek
    [SerializeField] bool canBuyMace, canBuyDagger, canBuyTeeth; // Kimenetek
    
    void OnValidate()
    {
        int priceOfMace = 10;
        int priceOfDagger = 4;
        int priceOfTeeth = 13;
    
        int goldToHpRate = 5;

        canBuyMace = priceOfMace <= gold || priceOfMace * goldToHpRate < hp;
        canBuyDagger = priceOfDagger <= gold || priceOfDagger * goldToHpRate < hp;
        canBuyTeeth = priceOfTeeth <= gold || priceOfTeeth * goldToHpRate < hp;
    }
}
// Beolvasás
Console.WriteLine("Insert the amount of Gold!");
string line = Console.ReadLine();
int gold = int.Parse(line);

Console.WriteLine("Insert the amount of HP!");
line = Console.ReadLine();
inthp = int.Parse(line);

int priceOfMace = 10;
int priceOfDagger = 4;
int priceOfTeeth = 13;

int goldToHpRate = 5;

// Számítások elvégzése
bool canBuyMace = priceOfMace <= gold || price * goldToHpRate < hp;
bool canBuyDagger = priceOfDagger <= gold || price * goldToHpRate < hp;
bool canBuyTeeth = priceOfTeeth <= gold || price * goldToHpRate < hp;

// Kiíratás
Console.WriteLine("Can buy Mace: " + canBuyMace);
Console.WriteLine("Can buy Dagger: " + canBuyDagger);
Console.WriteLine("Can buy Teeth: " + canBuyTeeth);
class VampireMerchant2 : MonoBehaviour
{
    [SerializeField] int gold, hp;                               // Bemenetek
    [SerializeField] bool canBuyMace, canBuyDagger, canBuyTeeth; // Kimenetek
    [SerializeField] bool canBuyAll;
    
    void OnValidate()
    {
        int priceOfMace = 10;
        int priceOfDagger = 4;
        int priceOfTeeth = 13;
    
        int goldToHpRate = 5;

        canBuyMace = (priceOfMace - gold) * goldToHpRate < hp;
        canBuyDagger = (priceOfDagger - gold) * goldToHpRate < hp;
        canBuyTeeth = (priceOfTeeth - gold) * goldToHpRate < hp;
        int priceOfAll = priceOfMace + priceOfDagger + priceOfTeeth;
        canBuyAll = (priceOfAll - gold) * goldToHpRate < hp;
    }
}
// Beolvasás
Console.WriteLine("Insert the amount of Gold!");
string line = Console.ReadLine();
int gold = int.Parse(line);

Console.WriteLine("Insert the amount of HP!");
line = Console.ReadLine();
int hp = int.Parse(line);

int priceOfMace = 10;
int priceOfDagger = 4;
int priceOfTeeth = 13;

int goldToHpRate = 5;

// Számítások elvégzése
bool canBuyMace = (priceOfMace - gold) * goldToHpRate < hp;
bool canBuyDagger = (priceOfDagger - gold) * goldToHpRate < hp;
bool canBuyTeeth = (priceOfTeeth - gold) * goldToHpRate < hp;
int priceOfAll = priceOfMace + priceOfDagger + priceOfTeeth;
bool canBuyAll = (priceOfAll - gold) * goldToHpRate < hp;


// Kiíratás
Console.WriteLine("Can buy Mace: " + canBuyMace);
Console.WriteLine("Can buy Dagger: " + canBuyDagger);
Console.WriteLine("Can buy Teeth: " + canBuyTeeth);
// Beolvasás
Console.WriteLine("Insert the distance on X axis!");
string line = Console.ReadLine();
float dx = float.Parse(line);

Console.WriteLine("Insert the distance on Y axis!");
line = Console.ReadLine();
float dy = float.Parse(line);

Console.WriteLine("Insert the speed of the enemy!");
line = Console.ReadLine();
float speed = float.Parse(line);

//Számítások elvégzése

// Pitagorasz rétel
float distanceSquare = (dx * dx) + (dy * dy);
float distance = (float) Math.Sqrt(distanceSquare);

float time = distance / speed;

//Kiíratás
Console.WriteLine("Time: " + time);
using UnityEngine;

class VampireMerchant : MonoBehaviour
{
    // Bemeneti változók:
    [SerializeField] float mana;        // Manaánk menynisége
    [SerializeField] int hp;            // Életpontjaink 
    [SerializeField] int maxHp;         // Maximum életpontunk 
    [SerializeField] float energy;      // Energiánk menynisége 
    
    [SerializeField] int enemyHp;       // Ellenfél életpontjai 
    [SerializeField] bool isEnemyHuman; // Ellenfél ember-e 

    // Kimeneti változók:
    [SerializeField] bool canPlayMace;   // Megvjátszató-e a buzogány
    [SerializeField] bool canPlayDagger; // Megvjátszató-e a tőr
    [SerializeField] bool canPlayTeeth;  // Megvjátszató-e a fog 

    void OnValidate()
    { 
        // Mace  
        canPlayMace = mana >= 3 && !isEnemyHuman && energy > 5; 

        // Dagger 
        canPlayDagger = (hp < enemyHp || hp <= maxHp / 2) && hp > 10;

        // Teeth 
        canPlayTeeth = 
            (mana >= 2 || hp > 5) &&
            (isEnemyHuman || energy > 3) &&
            hp != maxHp;
    }
}
float mana = 10;           // Manaánk menynisége
int hp = 50;               // Életpontjaink 
int maxHp = 100;           // Maximum életpontunk 
float energy = 2.5f;       // Energiánk menynisége 

int enemyHp = 25;          // Ellenfél életpontjai 
bool isEnemyHuman =false;  // Ellenfél ember-e ?

// ----- A fentieket be is olvashattuk volna a konzolról -----

bool canPlayMace;          // Kijátszató-e a buzogány kártya
bool canPlayDagger;        // Kijátszató-e a tőr kártya
bool canPlayTeeth;         // Kijátszató-e a fog kártya

// Mace  
canPlayMace =	mana >= 3 && !isEnemyHuman &&	energy > 5;

// Dagger 
canPlayDagger =	(hp < enemyHp || hp <= enemyHp) &&	hp > 10;

// Teeth 
canPlayTeeth =
	(mana >= 2 || hp > 5) &&
	(isEnemyHuman || energy > 3) &&
	hp != maxHp;


Console.WriteLine("Can play the Mace card: " + canPlayMace);
Console.WriteLine("Can play the Dagger card: " + canPlayDagger);
Console.WriteLine("Can play the Teeth card: " + canPlayTeeth);
class RandomUniversity : MonoBehaviour
{
    [SerializeField]string firstName = "Elemér";  // Keresztnév
    [SerializeField]string familyName = "Lapos";  // Vezetéknév
    [SerializeField]int birthYear = 1995;         // Születési év
    
    [SerializeField]int heightInCm = 182;         // Magasság
    [SerializeField]bool isSnoring = true;        // Horkol-e
    [SerializeField]bool isGirl = false;          // Áány-e

    [SerializeField]bool acceptedToBakli;         // Felvehető-e a Bakli karra
    [SerializeField]bool acceptedToPlimpli;       // Felvehető-e a Plimpli karra
    [SerializeField]bool acceptedToTropli;        // Felvehető-e a Tropli karra

    void OnValidate()
    {
        // Bakli
        bool heigthIsRight = heightInCm > 165 && heightInCm <= 200;  // A magasság megfelelő
        bool ageIsRight = birthYear >= 2000;                         // A kor megfelelő
        acceptedToBakli = heigthIsRight && ageIsRight && !isSnoring; // Mindkét feltétel szükséges

        // Plimpli
        heigthIsRight = heightInCm < 180 || heightInCm > 210;        // A magasság megfelelő
        bool nameIsRight = firstName == familyName;                  // A név megfelelő
        acceptedToPlimpli = heigthIsRight || nameIsRight;            // Bármely feltétel elégséges

        // Tropli
        bool genderSpecificRequirement =                             // Nemre specifikus feltételek
            (isGirl && heightInCm < 150) ||                          // Ha lány
            (!isGirl && isSnoring);                                  // Ha nem lény
        acceptedToTropli =
            !acceptedToPlimpli && genderSpecificRequirement;        // Mindkét feltétel szükséges
    }
}
string firstName = "Elemér";  // Keresztnév
string familyName = "Lapos";  // Vezetéknév

int birthYear = 1995;         // Születési év
int heightInCm = 182;         // Magasság
bool isSnoring = true;        // Horkol-e
bool isGirl = false;          // Áány-e

bool acceptedToBakli;         // Felvehető-e a Bakli karra
bool acceptedToPlimpli;       // Felvehető-e a Plimpli karra
bool acceptedToTropli;        // Felvehető-e a Tropli karra


// Bakli
bool heigthIsRight = heightInCm > 165 && heightInCm <= 200;  // A magasság megfelelő
bool ageIsRight = birthYear >= 2000;                         // A kor megfelelő
acceptedToBakli = heigthIsRight && ageIsRight && !isSnoring; // Mindkét feltétel szükséges

// Plimpli
heigthIsRight = heightInCm < 180 || heightInCm > 210;        // A magasság megfelelő
bool nameIsRight = firstName == familyName;                  // A név megfelelő
acceptedToPlimpli = heigthIsRight || nameIsRight;            // Bármely feltétel elégséges

// Tropli
bool genderSpecificRequirement =                             // Nemre specifikus feltételek
    (isGirl && heightInCm < 150) ||                          // Ha lány
    (!isGirl && isSnoring);                                  // Ha nem lény
acceptedToTropli =
    !acceptedToPlimpli && genderSpecificRequirement;        // Mindkét feltétel szükséges