الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

محاكاة RPG باستخدام سي بلس بلس

مغلق
بدأه OpenGL في 22 يوليو 2007 · 6 رد · 1,139 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

اول شي احب اقلكم انه انا جداً مبتدأ ولسه قاعد اتعلم في الC++ يعني لسه مادخلت لا في OpenGL ولا غيره بس ناوي على هاذي المكتبة ان شاء الله...

اليوم لما اتعلمت الدالتين rand( ) و srand() التي تنشئ ارقاماً عشوائية فكرت في كتاية كود يحاكي باتل العاب الآر بي جي(زي فاينل فانتاسي)

هل لاحظتم انه لما تضرب اي وحش ففي فاينل فنتاسي او غيرها من العاب الآر بي جي انه الضررDamage الذي يلحق بالعدو يعتمد مداه على

1- قوة السلاح

2- فوة الشخصية

3- قوة الخصم

ولكنه في النهاية عشوائي وتراوح بين عدة ارقام ... كنت اتسائل كيف يمكنهم صنع ذلك بما ان كل شيئ مبرمج مبقاُ؟؟؟

ولكن اليوم بعد مااتعلمت هاذي الدالتين اكتشفت السر اخيراً :lol: وهي اكيد باستخدام الدوال العشوائية

هذا كودي اتمنى ينفهم والمحاكاة في المرفقات...

لاحظو انه اذا كان الضرر صفر فإن البرنامج يعرض Miss تماماً كمافي الRPG

اتمنى تعذروني على مشاركتي الضعيفة ...

// RPG battle system v0.1 beta

#include<iostream>
#include <cstdlib>
#include<ctime>
using namespace std;

int main()
{
	cout<<"\t\t\tRPG Battle System v0.1 BETA";
	int enemyHP=50;
	srand(time(0));
	int randomNumber=((rand()%10));
	start:
	cout<<"\n\n\nYour enemy HP is: "<<enemyHP;
	cout<<"\nPress Enter to hit your enemy!";
	std::cin.ignore(std::cin.rdbuf()->in_avail() + 1);// this code only to keep the window open
	cout<<"\n\nyou hit the enemy by "<<randomNumber;
	enemyHP-=randomNumber;
	if(randomNumber==0)
	{
				  cout<<"\nMiss!";
				  std::cin.ignore(std::cin.rdbuf()->in_avail() + 1);// this code only to keep the window open
	}				   
	if(enemyHP==0||enemyHP<0)
	{
				  cout<<"\n\n\nEnemy defeated,Congratulation!\n\n\n\n\n";
				  std::cin.ignore(std::cin.rdbuf()->in_avail() + 1);// this code only to keep the window open
	}
	else{
		 srand(time(0));
		 randomNumber=((rand()%10));
		 goto start;
		 }		
	std::cin.ignore(std::cin.rdbuf()->in_avail() + 1);// this code only to keep the window open
	return 0;
}

شكراً جزيلا ويمكن يفيد المبتدئين امثالي...

RPG_Battle_System_v0.1_BETA.zip

تم تعديل هذه المشاركة بواسطة OpenGL في 22 يوليو 2007 في 17:16

opengl_animated.gif

There's nothing in this world that you can't be if you want it enough

#2

مشكور على الكود

بس

الألعاب مثل فاينل فانتازي

ما بتعتمد على ارقام عشوائية

بتعتمد على عدة عمليات حسابية

#3
Sniper_Acer كتب:
مشكور على الكود

بس

الألعاب مثل فاينل فانتازي

ما بتعتمد على ارقام عشوائية

بتعتمد على عدة عمليات حسابية

العفو اخوي

صح انها تعتمد كما قلت على بعض العوامل بس لو تلاحظ انو ضربتين متتالية بنفس السلاح ممكن انها لاتؤدي لنفس الضرر

بل يختلف قليلا وممكن نفسه وممكن Miss

لابد ان يكون في الامر بعض العشوائية ولكن في مدى معين...هذا والله اعلم

تم تعديل هذه المشاركة بواسطة OpenGL في 22 يوليو 2007 في 17:40

opengl_animated.gif

There's nothing in this world that you can't be if you want it enough

#4

انا لم العب فاينال فانتازي ولكن لعبت العاب قريبة لها

وانا قصدت في القتال المتكرر مثل الخصوم الضعيفة ممكن ان تكون معادلاتها تعتمد على بعض العشوائية ولكنها مقيدة ببعض الاوامر

اي عندماا تبلغ قوتك حد معين لايمكن ان تكون ضربتك على خصم عادي MISS

اما في المعارك الحاسمة يوجد لها معدلات لاتتدخل العشوائية فيها

هذا هوا اعتقادي مع العلم اني لاعلاقة لي في برمجة الالعاب ولا السي ++

#5
Sniper_Acer كتب:
انا لم العب فاينال فانتازي ولكن لعبت العاب قريبة لها

وانا قصدت في القتال المتكرر مثل الخصوم الضعيفة ممكن ان تكون معادلاتها تعتمد على بعض العشوائية ولكنها مقيدة ببعض الاوامر

اي عندماا تبلغ قوتك حد معين لايمكن ان تكون ضربتك على خصم عادي MISS

هذا ماقصدت بعشوائية ولكن بمدى معين اقصد حسب الليفل تبعك واللفل تبع خصمك واشياء اخرى...

opengl_animated.gif

There's nothing in this world that you can't be if you want it enough

#6

السلام عليكم

محاولة جيدة، يمكنك إضافة دور للخصم الآخر (الحاسب).

بالطبع جميع الألعاب تستعمل الإحتمالات، لكن الطرق تختلف و إلا فإنك ستحصل على نفس النتائج في كل مرة.

يمكنك استخدام loop بدل الـ goto.

#7
ib_doom كتب:
السلام عليكم

محاولة جيدة، يمكنك إضافة دور للخصم الآخر (الحاسب).

بالطبع جميع الألعاب تستعمل الإحتمالات، لكن الطرق تختلف و إلا فإنك ستحصل على نفس النتائج في كل مرة.

يمكنك استخدام loop بدل الـ goto.

شكرا على التعقيب البناء :lol:

opengl_animated.gif

There's nothing in this world that you can't be if you want it enough

هذا الموضوع مغلق.

مواضيع مشابهة