Professional Documents
Culture Documents
Rain Simulation
Rain Simulation
DETYRE KURSI
Lënda : Teknikat dhe gjuhet e programimit
Viti:1
Grupi:C
Pranoi : Punoi:
Dr. Hakik Paci Mite Hajdari
KOMENTI
Ky kod implementon një program që vizaton shiu ose borë me ane te matricave dhe ruan numrin total
të pikave të shiut dhe borës pas cdo ekzekutimi
ofron funksione dhe struktura për manipulimin e kohës dhe datës në programet C.
Rreshti 5:Perfshin #define për të përcaktuar vlera të ndryshme, siç janë konstantat numerike,
fjalëkalimet, gjatësitë e vargjeve, etj.
1. Deklarimet e variablave dhe konstantave: Përfshin variablat globale si isContinue (për të ndaluar
ekzekutimin), direction (për treguar drejtimin e erës/shiut), inkrementoPikatShiut (për
inkrementimin e pikave të shiut d),
3. Funksioni WriteToFile(): Ky funksion hap file-n "pikat.txt" në mënyrë të shtuar dhe shkruan në të
informacionin për koordinatat e pikave të shiut dhe borës së vizatuar. Informacioni përfshin
tipin e pikës (shi ose borë) dhe koordinatat x dhe y të pikës.
4. Funksioni main(): Ky funksion është pika hyrëse e programit. Fillimisht, inicializohet dritarja
grafike përmes funksionit initgraph(). Pastaj, lexohet totali i pikave të shiut dhe borës nga file-n
"pikat.txt" (nëse file ekziston). Më pas, shfaqet një mesazh në terminal për të treguar opsionet e
programit.
5. Cikli do-while: Kjo pjesë përmban ciklin kryesor të programit, i cili ekzekutohet derisa të
ndalohet nga përdoruesi. Brenda ciklit, përdorimi i funksionit rand() përdoret për të zgjedhur
pozicionin e rastësishëm për pikat e shiut dhe borës. Në varësi të vlerës së direction(drejtimi i
erës/shiut), Gjithashtu, për çdo pikë të vizatuar, thirren funksionet WriteToFile() për të ruajtur
informacionin dhe përditësuar totalin e pikave të shiut dhe borës.
Rreshti 11-13:Deklarate e variables,ajo deklaron nje variable te tipit integer me emrin score dhe I jep
vleren fillestare,direction perdoret per te ruajtur info ne lidhje me drejtimin ne program ,void
inkrementoPikatShiut perdoret per implementimin e llogjikes per inkrementimin e pikave te shiut ,score
e rrit me 1 vleren
Rreshti 17-26:Nuk kthen asnje rezultat dhe nuk pranon asnje argument.Pas deklarimit duhet te
implementojne llogjiken e funksionitper te shkruar te dhenat ne nje file.Ne komanden tjeter printeri I
quajtur “file”deklarohet dhe inicializohet per te paraqitur skedarin “numri.txt”.Hapja e skedarit behet me
funksionin fopen()me argument nr txt per emrin e skedarit dhe a per ti treguar qe deshironi te hapni
skedarin per shtim te dhenash ne fund te skedarit
Rreshti 24-27:Perdoren per shkrimin e te dhenave ne nje skedar dhe mbylljen e tyre
Rreshti 28-56:Tregon definimin e nje funksioni choose qe nuk pranon asnje argument dhe nuk kthen
asnje rezultat.Getch perdoret per te bere vendimmarrje bazuar ne vleren e karaterit te lexuar ne
tastiere.Perdoret switch per te specifikuar veprimet.Break perdoret per te dale nga struktura switch per te
shmangur ekzekutimin e veprimeve
Rreshti 57-64:Perdor funksionet e librarise windows.h per te fshehur kursorin ne terminalin e konsoles
Rreshti 64-67:Cikel I perseritur I matrices dhe kemi funksionin srand per te inicializuar generatorin e
numrit te rastesishem
Rreshti 79-115:Kemi perseritje te cikleve do-while qe ekzekutohen te pakten 1 here dhe vazhdon te
perseritet derisa kushti te jete I vertete ,por edhe cikli if-else qe shpjegon llogjiken e zgjidhjes duke lejuar
ekzekutimin e nje blloku tjeter te kodit nese nje kusht eshte I vertete dhe bllokun tjeter te kodit nese
kushti eshte I pavertete
Rreshti 116-134:Usleep perdoret per te shtyre ekzekutimin e programit per nje kohe te caktuar ne
mikrosekonda.Perdoret struktura e ciklit per te kryer zhvendosjen e vlerave ne matrice.Kbhit funksion qe
perdoret per te verifikuar shtypjet ne tastiere
KODI
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <conio.h>
#include <windows.h>
#define ROWS 12
#define COLS 120
int score=0,direction=90,isContinue=1;
void inkrementoPikatShiut(){
score++;
void writeToFile(){
int main() {
hideCursor();
char matrix[ROWS][COLS];
int i, j;
int col;
do {
system("cls");
col = rand() % COLS;
if(direction==40){
matrix[0][col] = '/';
}
else if(direction==125){
matrix[0][col] = '\\';
}
else if(direction==20){
matrix[0][col] = '*';
}
else{
matrix[0][col] = '|';
}
usleep(25000);
for (i = ROWS - 1; i > 0; i--) {
for (j = 0; j < COLS; j++) {
matrix[i][j] = matrix[i - 1][j];
}
}