http://rapidshare.com/files/274304807/CP1_0910_Proj2.pdf
هذا الرابط كان وصف للعبه وقمت بصناعتها بحوالي 3 ساعات واود ان اطرحها هنا لتعم الفائده للجميع والكود يستطيع اي احد استخدامه او تطويره لتعم الفائده إن شاء الله .
والكود مكون من جزئياً
اولاً game .h
#include<stdio.h>
#include <ctime>
#include<windows.h>
ref class game{
public :
void create_new_game(int array_dimension);
void Print_Game_Screen();
bool Game_End();
bool Enter_Number_From_Player(System::String^);
void Winner();
private :
int array_size;
cli::array<System::String^,2>^main_array;
int player1_score;
int player2_score;
bool start;
int current_row;
int current_column;
int current_player;//0-player1 1-player2
};
void game::create_new_game(int array_size){
time_t l;
game::array_size=array_size;
main_array=gcnew array<System::String^,2> (array_size,array_size);
srand((unsigned)time(NULL));
for (int i=0;i<array_size;i++)
for (int j=0;j<array_size;j++)
main_array[i,j]=System::Convert::ToString((rand()%201-100));
start=false;//No one make move
current_player=0;
}
void game::Print_Game_Screen(){
for(int i=0;i<array_size;i++){
for(int s=0;s<array_size;s++){
printf("-------");
}
printf("\n");
for(int j=0;j<array_size;j++){
printf("| %s",main_array[i,j]);
for(int c=0;c<(5-main_array[i,j]->Length);c++)
printf(" ");
}
printf("|\n");
}
for(int s=0;s<array_size;s++){
printf("-------");
}
printf("\n");
printf("Player ONE Score %d Player TWO Score %d\n",player1_score,player2_score);
}
bool game::Game_End(){
bool End=false;
bool in_row=false;
bool in_column=false;
for(int i=0;i<array_size;i++){
for(int j=0;j<array_size;j++)
if((main_array[i,j]!="X"))
in_row=false;
if (in_row) End=true;
in_row=true;
}
for(int j=0;j<array_size;j++){
for(int i=0;i<array_size;i++)
if((main_array[i,j]!="X"))
in_column=false;
if (in_column) End=true;
in_column=true;
}
return End;
}
bool game::Enter_Number_From_Player(System::String^ S){
if(S=="X")
return 0;
if(!start){
for (int i=0;i<array_size;i++)
for (int j=0;j<array_size;j++)
if(main_array[i,j]==S){
player1_score+=System::Convert::ToDouble(main_array[i,j]);
main_array[i,j]="X";
current_column=j;
current_row=i;
start=true;//the first move done
}
current_player=1;
return 1;
}
if (current_player==0)
for (int j=0;j<array_size;j++)
if(main_array[current_row,j]==S){
player1_score+=System::Convert::ToDouble(main_array[current_row,j]);
main_array[current_row,j]="X";
current_column=j;
current_player=1;
return 1;}
if (current_player==1)
for (int i=0;i<array_size;i++)
if(main_array[i,current_column]==S){
player2_score+=System::Convert::ToDouble(main_array[i,current_column]);
main_array[i,current_column]="X";
current_row=i;
current_player=0;
return 1;}
return 0;
}
void game::Winner(){
if (player1_score>player2_score )
printf("\n******** Player ONE WINs **********");
else
printf("\n******** Player TWO WINs **********");
}ثانياً ال main
// Project.cpp : main project file.
#include "stdafx.h"
#include "game.h"
#include "iostream"
#include<conio.h>
using namespace System;
using namespace std;
int main(array<System::String ^> ^args)
{
int size;
String^ temp;
bool state=0;//if state change meant the other turn
printf("Enter Array Size ");
while(!(cin>>size) || size<0){
cout<<"\nWrong Input\nEnter Array Size ";
cin.clear();
cin.get();
}
game Game;
Game.create_new_game(size);
while(!(Game.Game_End())){
system("cls");
Game.Print_Game_Screen();
switch(state){
case 0:printf("Player One Enter Number ");break;
case 1:printf("Player Two Enter Number ");break;
}
temp=Console::ReadLine();
if(Game.Enter_Number_From_Player(temp))
state=!state;
}
system("cls");
Game.Print_Game_Screen();
Game.Winner();
getch();
}وهنا اللعبه مع الكود

