ebSkola

1.4 Pirmais C# skripts: mainīgie un izvade

Stundas uzdevums: Izveidot Paddle C# klasi, pārbaudīt datu tipus un atsevišķu scēnas instanču īpašības.

SR 2.4.13. Mainīgie un datu tipi SR 2.4.15. Modulāras programmas

80 min plāns: Ievads (~10 min) · raketes klase (~20 min) · mainīgie un instances (~25 min) · pārbaude un skaidrojums (~20 min) · saglabāšana (~5 min).

Pirms sāc: BuildCheck izdruka no 1.3 darbojas. Tagad rakstīsi C# klasi pašai raketei. Šodien pārbaudīsi tās datus; kustības metodi pievienosi 1.5 stundā.

Darba ritms: pēc katra uzdevuma saglabā un pārbaudi rezultātu. Kad projektam pievienots C# skripts, pirms palaišanas nospied Build. Kļūdu gadījumā sāc ar pirmo sarkano kļūdu, nevis nākamo uzdevumu.

Teorija: klase un dati, kurus izmantos spēle

using Godot; ļauj izmantot Godot tipus. public partial class Paddle : CharacterBody2D deklarē klasi, kas atbilst Paddle scēnas saknes tipam. Faila nosaukums ir Paddle.cs, bet šīs klases instances Main scēnā drīkst saukties PaddleLeft un PaddleRight.

_Ready() darbojas, kad mezgls ir gatavs scēnā. GD.Print izvada tekstu; $"...{Speed}..." ievieto mainīgā vērtību virknē. [Export] ļauj mainīt vērtību Inspector pēc Build. Inspector saglabāta vērtība ir svarīgāka par koda noklusējumu.

TipsPiemērs spēlē
floatSpeed = 420.0f — ātrums; f norāda float literāli.
stringInputUp = "p1_up" — darbības nosaukums.
boolIsActive = true — vai rakete drīkst kustēties.
intVesels punktu skaits, ko 1.6 glabās Game klase.
Vector2Position vai Velocity ar X un Y komponentēm.

1. uzdevums -

Pievieno Paddle.cs kopīgajai raketes scēnai

  1. Atver Paddle.tscn, izvēlies tās CharacterBody2D sakni un Attach Script → C# → res://Scripts/Paddle.cs. Aizstāj automātiski ģenerēto kustības paraugu ar pilno kodu zemāk.
  2. Pārbaudi Speed, InputUp, InputDown un IsActive. { get; set; } ir īpašība, kuru cits skripts vēlāk varēs nolasīt un mainīt, lai pēc uzvaras apturētu raketes.
  3. Saglabā un Build. Atver Main.tscn un ar F5 pārbaudi Output: jābūt divām rindām, vienai no PaddleLeft, otrai no PaddleRight.
  4. Pārliecinies, ka projektā ir tikai viens Paddle.cs; abas scēnas instances izmanto vienu klasi, bet katrai ir savas vērtības.
1.4 Paddle.cs — pilns fails salīdzināšanai

Lejupielādēt Paddle.cs. Aizstāj tikai atbilstošā faila saturu; neveido otru tāda paša nosaukuma klasi.

using Godot;

public partial class Paddle : CharacterBody2D
{
    [Export] public float Speed = 420.0f;
    [Export] public string InputUp = "p1_up";
    [Export] public string InputDown = "p1_down";
    public bool IsActive { get; set; } = true;

    public override void _Ready()
    {
        GD.Print($"{Name}: ātrums {Speed}, vadība {InputUp}/{InputDown}, aktīva {IsActive}");
    }
}

Gatavs, kad: abas raketes izdrukā savu mezgla nosaukumu un datus; izskats Main scēnā ir saglabāts.

2. uzdevums -

Iestati katrai raketei savus datus

  1. Main scēnā atlasi PaddleLeft. Inspector pēc Build redzami skripta lauki: Speed = 420, Input Up = p1_up, Input Down = p1_down.
  2. Atlasi PaddleRight un tikai šai instancei iestati Input Up = p2_up, Input Down = p2_down. Pati Input Map tiks izveidota 1.5 stundā.
  3. Uz laiku PaddleRight Speed maini uz 300. Palaid F5: izdrukā kreisajai paliek 420, labajai ir 300. Atjauno labajai 420. Tas apliecina, ka kopīgs skripts nenozīmē kopīgu lauka vērtību.
  4. Paddle.cs _Ready beigās pievieno GD.Print($"Pozīcija: {Position}");. Main scēnā pozīcijām jābūt (60,360) un (1220,360). Pārbaudi ar F5, tad šo papildu izdruku noņem.

Gatavs, kad: abām instancēm ir atšķirīgi ievades nosaukumi, vienāds ātrums un pareizas pozīcijas.

3. uzdevums -

Paskaidro vērtības un saglabā strādājošo versiju

  1. README.md izveido tabulu: lauks, tips, vērtība kreisajai raketei, vērtība labajai raketei un tā nozīme spēlē.
  2. _Ready sākumā uz laiku ievieto int testScore = 0;, tad testScore += 1; un GD.Print(testScore);. Katrā jaunā F5 palaišanā katra rakete izdrukā 1, nevis turpina iepriekšējo skaitu. Pieraksti, kāpēc. Pēc tam šīs trīs pārbaudes rindas noņem.
  3. Paskaidro atšķirību starp Speed noklusējumu C# kodā un Inspector saglabāto vērtību. Ja koda maiņa neparādās, apskati instances īpašības; ar atiestatīšanas ikonu var atjaunot noklusējumu.
  4. No Main.tscn noņem diagnostikas BuildCheck mezglu, jo vide jau pārbaudīta; BuildCheck.cs failu drīkst paturēt. Saglabā, Build, F5 un pārliecinies, ka palikušas divas raketes izdrukas. Veic Commit un Push.

Gatavs, kad: projekts paliek bez pagaidu eksperimentiem, un katras raketes dati ir saprotami un pārbaudīti.

Papildu uzdevums — salīdzini ar Python

README.md salīdzini print un GD.Print, mainīgā tipa deklarēšanu, true un True, figūriekavas un atkāpes. Pie katra C# piemēra paskaidro, ko tas dara tavas raketes klasē.

Ko sagatavo

Stundas mērķis: raketes scēnai ir reāla C# klase ar nākamajā stundā izmantojamiem datiem.

GitHub krātuvē jābūt:

  1. Scripts/Paddle.cs, atjaunināti Paddle.tscn un Main.tscn.
  2. README.md datu tabula un Inspector skaidrojums; abu rakešu izdrukas.

Saglabā projekta iestatījumus, izveidotās scēnas un resursus; no 1.3 stundas arī C# skriptus un projekta failus (.csproj u.c.). .gitignore ieraksti .godot/, bin/ un obj/ katru savā rindā.

Kā iesniedz: veic commit un push. Skolotāja norādītajā vietā iesniedz GitHub krātuves saiti; README.md un pārbaudes pierādījumiem jābūt krātuvē.

Ja kaut kas nestrādā

PazīmeKo pārbaudīt
Inspector lauki neparādāsSaglabā failu, Build un atlasi raketes sakni, nevis Visual.
Abas izdrukā p1_upPaddleRight instancei Main scēnā iestati p2_up/p2_down; kopīgajai Paddle.tscn scēnai atstāj p1 nosaukumus.
Cannot find class PaddleFails Paddle.cs, klase Paddle, mantojums CharacterBody2D; pārbaudi partial un pirmo Build kļūdu.
Redzama tikai viena raketes izdrukaPalaid Main ar F5, nevis vienu Paddle.tscn ar F6.