Gta San Andreas MultiPlayer (samp) HUN
Navigation
     
Account
Felhasznlnv:

Jelsz:
SgSg
Regisztrci
Elfelejtettem a jelszt
     
Kp
Szerver
Legyen ennek a weboldalnak sajt samp szervere?

Igen
Nem
Szavazs llsa
Lezrt szavazsok
     
Friss

Utols mdosts
2013 mj. 19.
12:17

 

     
Ms weblapok
 SA:MP Frum
SA:MP Wiki
Google

     

PAWN Eszkzk
     
Cikklusok

Egy szp lers ChuckNorristl sampforum.hu-rl

A ciklusok hasznlata

dvzlk mindenkit,szeretnm leirni nektek a ciklusok hasznlatt ebben a kis lersban.
Elszr is,bevezetnek:
Ciklust akkor hasznlunk, ha ugyanazt a feladatot tbbszr kell elvgezni egyms utn. 
Hromfle ciklus ltezik.Ezeket egyenknt fogom bemutatni pldkkal.
2 nagyobb fajta ciklus van : elltesztels (for,while) s htultesztels (do-while) ciklus.

A program az elltesztels ciklusba csak akkor lp be, ha a felttel teljesl. A felttel a ciklus elejn tallhat. 
A htultesztels ciklus hasznlatakor a program mindenkppen belp a programba s mindaddig ismtli, amg a felttel nem teljesl. 

Kezdjk is el:


for ciklus

Ez a legegyszerbb s a leggyakrabban hasznlt ciklus,s szerintem ezt mindenkinek ismernie kell.
Ez egy elltesztels ciklus.
Nzzk a ciklus felptst.

for(ciklusvltoz;ciklusfelttel;posztfix) //vagy prefix
i++ = posztfix
++i = prefix

Klmbsg: ebben a konkrt pldban( for ciklus ) ugyan nincs, de a prefixes alak hasznlatnl a lptets mvelet feldolgozsa eltt lejtszdik, gy a vltoz mr az j rtkkel vesz rszt a folyamatban.

Kd:
new x, y = 5;
x = ++y;
//Az x, s az y rtke is 6 lesz

Kd:
new x, y = 5;
x = y++;
//Az x rtke 5, az y rtke 6 lesz

//szrevtelt ksznm Fade-nak,szp megfogalmazst ZeRo-nak.

Plda:

for(new i = 0;i < 10;i++) // Vagy ++i
{
 //Ez a ciklustrzs,ide jnnek a feladatok. 
 printf("Az i rtke %d",i); // A printf fgvnyel runk a konzolba.
}

Ez egy nagyon egyszer kis kd,ami azt eredmnyezn,hogy addig rjuk ki az i vltozt a konzolba,ameddig annak rtke kisebb mint 10.Teht,a ciklus addig fut le amg a vltoznk rtke kisebb mint 10.
Mindig azok az utastsok hajtdnak vgre,amik a ciklustrzsben vannak.
Ez akkor hasznos a gyakorlatban,hogyha pl. vgig akarunk menni az sszes jtkoson,akik a szerveren tartzkodnak.NEM csak erre lehet hasznlni!

/* rdekessg:

Egyes paramterek elhagyhatk,de a pontosvesszt ( ; ) mindig ki kell rakni!
Plda:

for(;ciklusfelttel;rtkvltoztats)

Itt elhagyuk a ciklusvltozt,a ciklus viszont gy is mkdik!

*/


Plda a gyakorlatra:

for(new i = 0;i < GetMaxPlayers();i++) 
{
 SpawnPlayer(i); // jraspawnoljuk az i-azonostj jtkost.
}

Ez a plda a gyakorlatban lespawnolja a sszes jtkost.
Magyarzat:
GetMaxPlayers(); //Ezel a fgvnyel lekrjk a szerver maximum frhelyt.Nem vesz fel paramtert.
SpawnPlayer(playerid); //Ezzel a fgvnyel jra lespawnolhatunk egy jtkost.Egyetlen paramrtere a jtkos azonostja.

A tbbi szerintem rthet,amg az i rtke kisebb mint GetMaxPlayers();  visszatrsi rtke (Pl. 30,vagy 50 stb...),Addig 1 el nveljk s vgrehajtjuk a feladatokat,amejeket a ciklustrzsbe rtunk.Magyarul ha van egy 30 slotos szervernk,akkor ez a ciklus vgigmegy mind a 30-jtkoson,s jraspawnolja ket.A ciklus viszont mindenkpp lefut 30-szor,akkoris ha az adott azonostoj jtkos nincs csatlakozva.Ezt knyen megelzhetjk.

for(new i = 0;i < GetMaxPlayers();i++) 
{
 // Spawn eltt ellenrizzk,hogy a jtkos csatlakozva van-e.
 if(IsPlayerConnected(i)) SpawnPlayer(i); 
}

gy a SpawnPlayer fgvny nem fut le ha a jtkos nincs csatlakozva.

while ciklus

Ez a ciklus nagyon hasonlt a feltteles utastshoz (if).
Ez egy elltesztels ciklus.

if(felttel)
while(felttel)

Legalbbis a szerkezete,ugyanis a feltteles utasts nem fut le ha a felttel nem teljesl.
while ciklus ponthogy fut mindaddig,amg a felttel teljesl.

Plda: 

new i = 0;
while(i != 10) printf("i tke: %d",i);

Teht,amg az i rtke nem 10,addig lefut a ciklus.Taln egyeseknek feltnhetett valami,mgpedigaz,hogy ez a ciklus hibs.Mivel ez egy vgtelen ciklus!Magyarzat:Nem modostjuk megfelel mdon az i rtkt,teht soha nem lesz az rtke 10!
for ciklusban ez autmatikus,itt magunknak kell figyelnnk r!

new i = 0;
while(i != 10) printf("i tke: %d",i),i++;

Na ez a ciklus a cljnak megfelelen mkdik,lefut 10 szer.

sszefoglalva,ez a ciklus addig fut le amg a felttel nem teljesl.
Gyakorlatban,mondjuk fjlok olvassnl hasznljuk,de ezzel is megoldhat a for ciklusnl hasznlt kis spawn kd.

new i = 0;
while(i != GetMaxPlayers())
{
 if(IsPlayerConnected(i)) SpawnPlayer(i); 
 i++;
}

do-while ciklus

Ez a ciklus ugyangy mkdik mint a while ciklus,anyi klnbsggel,hogy az itt lert utastsok 1X-mindenkpp lefutnak,ha teljesl a felttel,ha nem.
Ez egy htultesztels ciklus.

Szerkezet:

new i = 1;
do
{
 printf("i rtke %d",i);
while(i != 1)

Ez egy egyszer plda,ltrehozunk egy i vltozt mejnek kezdrtke 1.
Lefut a ciklus,majd ellenrizzk hogy az i egyenl e 1-el.Ha nem,a ciklus jra lefut,amg a felttel nem teljesl.
Ha igen,a ciklus vget is rt.
A felttel mr teljeslt,a cikus mgis lefutott egyszer.

//A gyakorlatban ne feletsk el megvltoztatni a megfelel mdon az i-rtkt,vagy vgtelen ciklust kapunk.

Nzzk csak a spawnols kdunkat.

new i = 0;
do
{
 if(IsPlayerConnected(i)) SpawnPlayer(i); 
 i++;
while(i != GetMaxPlayers())

Utsz

Egyenlre enyit a ciklusokrl,ha valamit elrtam/nem jl fogalmaztam,hibztam stb.
Akkor krlek jelezztek a topicban.

Ha eszembe jut mg valami a ciklusokrl,akkor aztis hozzrom a lershoz.

Prbltam egyszeren leirni,hogy a kezdk is teljesen megrtsk.

Mg nincs hozzszls.
     
Nzettsg
Induls: 2010-02-26
     
PAWN/Szkriptek
     
Tutorialok
     
ra
     
Chat
Krlek, felesleges dolgokat ne rj a chatbe!
Nv:

zenet:
:)) :) :@ :? :(( :o :D ;) 8o 8p 8) 8| :( :'( ;D :$
     

Elkészítem születési horoszkópod és ajándék 3 éves elõrejelzésed. Utána szóban minden kérdésedet megbeszéljük! Kattints    *****    Könyves oldal - egy jó könyv, elrepít bárhová - Könyves oldal    *****    20 éve jelent meg a Nintendo DS! Emlékezzünk meg ról, hisz olyan sok szép perccel ajándékozott meg minket a játékaival!    *****    Ha érdekelnek az animék,mangák,videojátékok, japán és holland nyelv és kultúra, akkor látogass el a személyes oldalamra.    *****    Dryvit, hõszigetelés! Vállaljuk családi házak, nyaralók és egyéb épületek homlokzati szigetelését! 0630/583-3168 Hívjon!    *****    Könyves oldal - Ágica Könyvtára - ahol megnézheted milyen könyveim vannak, miket olvasok, mik a terveim...    *****    Megtörtént Bûnügyekkel foglalkozó oldal - magyar és külföldi esetek.    *****    Why do all the monsters come out at night? - Rose Harbor, a város, ahol nem a természetfeletti a legfõbb titok - FRPG    *****    A boroszkányok gyorsan megtanulják... Minden mágia megköveteli a maga árát. De vajon mekkora lehet ez az ár? - FRPG    *****    Alkosd meg a saját karaktered, és irányítsd a sorsát! Vajon képes lenne túlélni egy ilyen titkokkal teli helyen? - FRPG    *****    Mindig tudnod kell, melyik kiköt&#245; felé tartasz. - ROSE HARBOR, a mi városunk - FRPG    *****    Akad mindannyijukban valami közös, valami ide vezette õket, a delaware-i aprócska kikötõvárosba... - FRPG    *****    boroszkány, vérfarkas, alakváltó, démon és angyal... szavak, amik mind jelentenek valamit - csatlakozz közénk - FRPG    *****    Why do all the monsters come out at night? - Rose Harbor, a város, ahol nem a természetfeletti a legfõbb titok - FRPG    *****    why do all monsters come out at night - FRPG - Csatlakozz közénk! - Írj, és éld át a kalandokat!    *****    CRIMECASESNIGHT - Igazi Bûntényekkel foglalkozó oldal    *****    Figyelem, figyelem! A második vágányra karácsonyi mese érkezett! Mesés karácsonyt kíván mindenkinek: a Mesetáros    *****    10 éves a Haikyuu!! Ennek alkalmából részletes elemzést olvashatsz az anime elsõ évadáról az Anime Odyssey blogban!    *****    Ismerd meg az F-Zero sorozatot, a Nintendo legdinamikusabb versenyjáték-szériáját! Folyamatosan bõvülõ tartalom.    *****    Advent a Mesetárban! Téli és karácsonyi mesék és színezõk várnak! Nézzetek be hozzánk!