|
كليات المجموعة الرياضية (الهندسة - الحاسبات والمعلومات - التجارة & التجارة إنجلش - الفنون التطبيقية والجميلة) |
|
أدوات الموضوع | انواع عرض الموضوع |
#1
|
|||
|
|||
![]()
اريد شرح كامل هذا الكود
هذا كود لعبة اكس او بلغة السي #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<windows.h> int board[10] = {2,2,2,2,2,2,2,2,2,2}; int turn = 1,flag = 0; int player,competitor; void menu(); void go(int n); void start_game(); void check_draw(); void draw_board(); void player_first(); void put_X_O(char ch,int pos); COORD coord={0,0}; // this is global variable //center of axis is set to the top left cornor of the screen void gotoxy(int x,int y) { coord.X=x; coord.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_H ANDLE),coord); } void main() { system("cls"); menu(); getch(); } void menu() { int choice; system("cls"); printf("***** Menu *****"); printf(" \n 1: play with x "); printf(" \n 2: play with y "); printf(" \n 3: Exit "); printf("Enter your choice"); scanf("%d",&choice); turn = 1; switch (choice) { case 1: player = 1; competitor = 0; player_first(); break; case 2: player = 0; competitor = 1; start_game(); break; case 3: exit(1); default: menu(); } } int make2() { if(board[5] == 2) return 5; if(board[2] == 2) return 2; if(board[4] == 2) return 4; if(board[6] == 2) return 6; if(board[8] == 2) return 8; return 0; } int make4() { if(board[1] == 2) return 1; if(board[3] == 2) return 3; if(board[7] == 2) return 7; if(board[9] == 2) return 9; return 0; } int posswin(int p) { // p==1 then X p==0 then O int i; int check_val,pos; if(p == 1) check_val = 18; else check_val = 50; i = 1; while(i<=9) //row check { if(board[i] * board[i+1] * board[i+2] == check_val) { if(board[i] == 2) return i; if(board[i+1] == 2) return i+1; if(board[i+2] == 2) return i+2; } i+=3; } i = 1; while(i<=3) //column check { if(board[i] * board[i+3] * board[i+6] == check_val) { if(board[i] == 2) return i; if(board[i+3] == 2) return i+3; if(board[i+6] == 2) return i+6; } i++; } if(board[1] * board[5] * board[9] == check_val) { if(board[1] == 2) return 1; if(board[5] == 2) return 5; if(board[9] == 2) return 9; } if(board[3] * board[5] * board[7] == check_val) { if(board[3] == 2) return 3; if(board[5] == 2) return 5; if(board[7] == 2) return 7; } return 0; } void go(int n) { if(turn % 2) board[n] = 3; else board[n] = 5; turn++; } void player_first() { int pos; check_draw(); draw_board(); gotoxy(30,18); printf("Your Turn :> "); scanf("%d",&pos); if(board[pos] != 2) player_first(); if(pos == posswin(player)) { go(pos); draw_board(); gotoxy(30,20); //textcolor(128+RED); printf("Player Wins"); getch(); exit(0); } go(pos); draw_board(); start_game(); } void start_game() { // p==1 then X p==0 then O if(posswin(competitor)) { go(posswin(competitor)); flag = 1; } else if(posswin(player)) go(posswin(player)); else if(make2()) go(make2()); else go(make4()); draw_board(); if(flag) { gotoxy(30,20); //textcolor(128+RED); printf("Computer wins"); getch(); } else player_first(); } void check_draw() { if(turn > 9) { gotoxy(30,20); //textcolor(128+RED); printf("Game Draw"); getch(); exit(0); } } void draw_board() { int j; for(j=14;j<17;j++) { gotoxy(35,j); printf("| |"); } gotoxy(28,11); printf("-----------------------"); gotoxy(28,14); printf("-----------------------"); for(j=1;j<10;j++) { if(board[j] == 3) put_X_O('X',j); else if(board[j] == 5) put_X_O('O',j); } } void put_X_O(char ch,int pos) { int m; int x = 31, y = 10; m = pos; if(m > 3) { while(m > 3) { y += 3; m -= 3; } } if(pos % 3 == 0) x += 16; else { pos %= 3; pos--; while(pos) { x+=8; pos--; } } gotoxy(x,y); printf("%c",ch); } |
العلامات المرجعية |
|
|