Guruh talabasi Nutfulloyev Sohibning Dasturlash uslublari va paradigmalar fanidan Mustaqil ishi


Download 1.25 Mb.
Sana10.03.2023
Hajmi1.25 Mb.
#1256715
Bog'liq
MutaqilIsh

312-20 guruh talabasi Nutfulloyev Sohibning Dasturlash uslublari va paradigmalar fanidan Mustaqil ishi

“CUBE Tower” o’yin dasturi

OOP qo’llanilgan qism

using UnityEngine;

using UnityEngine.UIElements;

public class ExplodeCubes : MonoBehaviour

{

public GameObject explosion;

private bool _collisionSet;

private void OnCollisionEnter(Collision other)

….

GameObject newVfx = Instantiate(explosion, new Vector3(other.contacts[0].point.x,other.contacts[0].point.y,

other.contacts[0].point.z), Quaternion.identity) as GameObject;

Destroy(newVfx,2.0f);

Destroy(other.gameObject);

_collisionSet = true;

}

}

}

Yuqoridagi kod qismida biz dassturda ExplodeCubes classi MonoBehaviour classidan voris olingan holatda yaratilganini ko’rishimiz mumkin. MonoBehaviour classi Unity muhitining Standart classleridan biri bo’lib o’yin obyektlari classlarini yaratishda qo’llanilinadi. Bu class ichida o’yin obyetkida mavjud bo’lgan standart maydonlar kiritilgan va bu maydonlarni qayta kitirish talab etilmaydi

  • Yuqoridagi kod qismida biz dassturda ExplodeCubes classi MonoBehaviour classidan voris olingan holatda yaratilganini ko’rishimiz mumkin. MonoBehaviour classi Unity muhitining Standart classleridan biri bo’lib o’yin obyektlari classlarini yaratishda qo’llanilinadi. Bu class ichida o’yin obyetkida mavjud bo’lgan standart maydonlar kiritilgan va bu maydonlarni qayta kitirish talab etilmaydi

OOP

struct CubePos

{

public int x, y, z;

public CubePos(int x,int y,int z)

{

this.x = x;

this.y = y;

this.z = z;

}

public Vector3 getVector()

{

return new Vector3(x, y, z);

}

public void setVector(Vector3 pos)

{

x = Convert.ToInt32(pos.x);

y = Convert.ToInt32(pos.y);

z = Convert.ToInt32(pos.z);

} }

Yuqoridagi kodda OOPda struktura yaratilganini ko’rishimiz mumkin. CubePos o’yinda yaratilgan kublarning pozitsiyasi ya’ni uch o’lchamli fazoda qo’yilgan o’rnini kordinatalar ko’rinishida saqlab turadi.

Yuqoridagi kodda OOPda struktura yaratilganini ko’rishimiz mumkin. CubePos o’yinda yaratilgan kublarning pozitsiyasi ya’ni uch o’lchamli fazoda qo’yilgan o’rnini kordinatalar ko’rinishida saqlab turadi.


Ushbu rasmda Birinchi o’rinda turgan kubning koordinatalarini ko’rishimiz mumkin. Uning koordinatalari XYZ (0, 1, 0) ko’rinishida sasqlangan

Deklarativ dasturlash paradigmasi

  • Deklarativ dasturlashda kodning aynan qanday maqsadni bajarishi muhim bo’lib, bu maqsadga aynan qanday kod yordamida erishilgani muhimmas. Quyida deklarativ dasturlash paradigmasiga missol bo’luvchi bir necha misollar berilgan

Deklarativ

SpawnPositions();//deklorativ

MoveCameraChangeBg();//deklorativ

}

if(!islose && allcubesrb.velocity.magnitude > 0.2f)

{

islose = true;

Destroy(cubeToPlace.gameObject);

StopCoroutine(showCubePlace);

restartButton.SetActive(true);//deklorativ

}

Imperativ Dasturlash

  • Imperativ dasturlashda dasturning maqsadi aynan qaysi kod yordamida amalga oshirilgani muhim bo’lib, dasturda amalga oshirilayotgan har bir qadam ko’rsatilgan bo’lishi kerak

private void OnCollisionEnter(Collision other)

  • private void OnCollisionEnter(Collision other)
  • {
  • if (other.gameObject.tag == "Cube" && !_collisionSet)
  • {
  • if(PlayerPrefs.GetString("music") == "Yes"){
  • GetComponent().Play();
  • }
  • for (int i = other.transform.childCount - 1; i >= 0 ; i--)
  • {
  • Transform child = other.transform.GetChild(i);
  • child.gameObject.AddComponent();
  • child.SetParent(null);
  • child.gameObject.GetComponent().AddExplosionForce(70f, Vector3.up, 45f);
  • }
  • Camera.main.transform.localPosition -= new Vector3(0,0,3f);
  • Camera.main.gameObject.AddComponent();
  • GameObject newVfx = Instantiate(explosion, new Vector3(other.contacts[0].point.x,other.contacts[0].point.y,
  • other.contacts[0].point.z), Quaternion.identity) as GameObject;
  • Destroy(newVfx,2.0f);
  • Destroy(other.gameObject);
  • _collisionSet = true;
  • }

Yuqoridagi misolda OnCollisionEnter funksiyasining imperative ko’rinishi keltirilgan. Bunda kublarning kolliziyaga kirishi ya’ni minoraning yerga qulashi paytida ishlashi kerak bo’lgan kod qo’llanilgan. Masalan, o’yin tugagani haqida xabar beruvchi maxsus ovoz berilishi, kubli minoraning mayda kublarga bo’linib ketishi va kameraning qaltirashi kabi amallar bajariladi.

  • Yuqoridagi misolda OnCollisionEnter funksiyasining imperative ko’rinishi keltirilgan. Bunda kublarning kolliziyaga kirishi ya’ni minoraning yerga qulashi paytida ishlashi kerak bo’lgan kod qo’llanilgan. Masalan, o’yin tugagani haqida xabar beruvchi maxsus ovoz berilishi, kubli minoraning mayda kublarga bo’linib ketishi va kameraning qaltirashi kabi amallar bajariladi.

E’tiboringiz uchun rahmat!


Download 1.25 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling