....TechnologyFuture 2011....
...computer technology and programing...
Tuesday, February 8, 2011
the matrix virus C# code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Title = "the tiger Virus";
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WindowLeft = Console.WindowTop = 0;
Console.WindowHeight = Console.BufferHeight = Console.LargestWindowHeight;
Console.WindowWidth = Console.BufferWidth = Console.LargestWindowWidth;
#if readkey
Console.WriteLine("H1T 7NY K3Y T0 C0NT1NU3 =/");
Console.ReadKey();
#endif
Console.CursorVisible = false;
int width, height;
int[] y;
int[] l;
Initialize(out width, out height, out y, out l);
int ms;
while (true)
{
DateTime t1 = DateTime.Now;
MatrixStep(width, height, y, l);
ms = 10 - (int)((TimeSpan)(DateTime.Now - t1)).TotalMilliseconds;
if (ms > 0)
System.Threading.Thread.Sleep(ms);
if (Console.KeyAvailable)
if (Console.ReadKey().Key == ConsoleKey.F5)
Initialize(out width, out height, out y, out l);
}
}
static bool thistime = false;
private static void MatrixStep(int width, int height, int[] y, int[] l)
{
int x;
thistime = !thistime;
for (x = 0; x < width; ++x)
{
if (x % 11 == 10)
{
if (!thistime)
continue;
Console.ForegroundColor = ConsoleColor.White;
}
else
{
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.SetCursorPosition(x, inBoxY(y[x] - 2 - (l[x] / 40 * 2), height));
Console.Write(R);
Console.ForegroundColor = ConsoleColor.Green;
}
Console.SetCursorPosition(x, y[x]);
Console.Write(R);
y[x] = inBoxY(y[x] + 1, height);
Console.SetCursorPosition(x, inBoxY(y[x] - l[x], height));
Console.Write(' ');
}
}
private static void Initialize(out int width, out int height, out int[] y, out int[] l)
{
int h1;
int h2 = (h1 = (height = Console.WindowHeight) / 2) / 2;
width = Console.WindowWidth - 1;
y = new int[width];
l = new int[width];
int x;
Console.Clear();
for (x = 0; x < width; ++x)
{
y[x] = r.Next(height);
l[x] = r.Next(h2 * ((x % 11 != 10) ? 2 : 1), h1 * ((x % 11 != 10) ? 2 : 1));
}
}
static Random r = new Random();
static char R
{
get
{
int t = r.Next(10);
if (t <= 2)
return (char)('0' + r.Next(10));
else if (t <= 4)
return (char)('a' + r.Next(27));
else if (t <= 6)
return (char)('A' + r.Next(27));
else
return (char)(r.Next(32, 255));
}
}
public static int inBoxY(int n, int height)
{
n = n % height;
if (n < 0)
return n + height;
else
return n;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Title = "the tiger Virus";
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WindowLeft = Console.WindowTop = 0;
Console.WindowHeight = Console.BufferHeight = Console.LargestWindowHeight;
Console.WindowWidth = Console.BufferWidth = Console.LargestWindowWidth;
#if readkey
Console.WriteLine("H1T 7NY K3Y T0 C0NT1NU3 =/");
Console.ReadKey();
#endif
Console.CursorVisible = false;
int width, height;
int[] y;
int[] l;
Initialize(out width, out height, out y, out l);
int ms;
while (true)
{
DateTime t1 = DateTime.Now;
MatrixStep(width, height, y, l);
ms = 10 - (int)((TimeSpan)(DateTime.Now - t1)).TotalMilliseconds;
if (ms > 0)
System.Threading.Thread.Sleep(ms);
if (Console.KeyAvailable)
if (Console.ReadKey().Key == ConsoleKey.F5)
Initialize(out width, out height, out y, out l);
}
}
static bool thistime = false;
private static void MatrixStep(int width, int height, int[] y, int[] l)
{
int x;
thistime = !thistime;
for (x = 0; x < width; ++x)
{
if (x % 11 == 10)
{
if (!thistime)
continue;
Console.ForegroundColor = ConsoleColor.White;
}
else
{
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.SetCursorPosition(x, inBoxY(y[x] - 2 - (l[x] / 40 * 2), height));
Console.Write(R);
Console.ForegroundColor = ConsoleColor.Green;
}
Console.SetCursorPosition(x, y[x]);
Console.Write(R);
y[x] = inBoxY(y[x] + 1, height);
Console.SetCursorPosition(x, inBoxY(y[x] - l[x], height));
Console.Write(' ');
}
}
private static void Initialize(out int width, out int height, out int[] y, out int[] l)
{
int h1;
int h2 = (h1 = (height = Console.WindowHeight) / 2) / 2;
width = Console.WindowWidth - 1;
y = new int[width];
l = new int[width];
int x;
Console.Clear();
for (x = 0; x < width; ++x)
{
y[x] = r.Next(height);
l[x] = r.Next(h2 * ((x % 11 != 10) ? 2 : 1), h1 * ((x % 11 != 10) ? 2 : 1));
}
}
static Random r = new Random();
static char R
{
get
{
int t = r.Next(10);
if (t <= 2)
return (char)('0' + r.Next(10));
else if (t <= 4)
return (char)('a' + r.Next(27));
else if (t <= 6)
return (char)('A' + r.Next(27));
else
return (char)(r.Next(32, 255));
}
}
public static int inBoxY(int n, int height)
{
n = n % height;
if (n < 0)
return n + height;
else
return n;
}
}
}
Thursday, January 27, 2011
الدرس الثانى فى دورة أحتراف لغة السى شارب!!!!!!!!!!!!
فى الدرس الاول تعرفنا على طريقة أنزال البرنامج وتشغيلة وكتابة برنامج بداخلة وحفظ البرنامج.
نقوم أولا بفتح المشروع الذى قمنا بكتابة فى الدرس الاول :
ويوجد عدة طرق لفتح مشروع موجود من قبل :
- نختار من القائمة الرئيسية كلمة file فتظر تحتها قائمة نختار منها الاختيار open Project فتظهر أمامنا شاشة يوجد فيها مجموعة مجلدات Folders باسماء المشاريع التى أنشأناها سابقا نختار منها ملف البرنامج ونفتحة ونختار البرنامج الذى نريدة كما فى الشاشة التالية.
- أو سوف تلاحظ عن تشغيل البرنامج وجود شاشة باسم Recent Project وفى الجانب الايسر للبرنامج وهى تحتوى على البرامج التى قمت بالتعامل بها فى المارات السابقة كما بالشكل التالى :
خطوات شرح البرنامج :
- لقد قمت أولا بحجز مخزن نصى من النوع String وأعطيت لة الاسم myname.
- قمت بفتح مكتبة Console وأخترت منها الامر Writeline.
أمر Writeline هذا يعتبر أمر من أوامر الطباعة على الشاشة أو بمعنى أخر ما يكتب بعدة يظهر فى النتيجة كما هو.
ملاحظة الامر لا يقبل اللغة العربية - وأيضا شكل الجملة بعدة تاتى بين ("الجملة التى تريد أن تظهر تكتب هنا") ثم (;) لانهاء التعامل مع الامر .
ثم قمت بجعل المتغير (myname) يساوى أمر Readline.
وأمر Readline هو أيضا من ضمن أوامر مكتبة Console وهذا الامر يسمح بادخال البيانات من لوحة المفاتيح الى شاشة التنفيذ مباشرة وهى يعتبر أمر من الاوامر المضافة على اللغة.
وشكل أمر Readline يكون كالاتى console.Readline ثم قوسين () ثم (;).
أمر Readline لا يتعامل مع المتغيرات الرقمية الا عن طريق التحويل.
- ثم قمت بكتابة أمر أخر لطباعة كلمة Hello وما تم أدخالة فى المخزن myname على الشاشة أما ال{0} الذى يوجد على الشاشة لن يتم يظهر على الشاشة لاننى أقصد بة أن يذهب الى أول مخزن بعد (,) أو بعد ال" " ويطبع ما بدخلة ولقد قمت باضافة مسافة لكى لا يطبع الاسم ويكلمة بكلمة Hello والنتيجة تكون كالاتى :
مثال أخر لجعل أمر Readline يتعامل مع المتغيرات الرقيمة عن طريق برنامج صغير لجمع أى رقمين :
خطوات شرح البرنامج :
- طبعا قمت بحجز مخزن من النوع String وأعطيتة الاسم s.
- وقمت أيضا بخزن مخزنين أخرين ولكن من النوع Int أى النوع الرقمى الذى يتعامل مع الارقام الصحيحة فقط لا يمكن فى هذا البرنامج جمع الكسور الارقام الصحيحة فقط.
- وقد قمت بكتابة أمر طباعة write ليطبع على الشاشة الاسم الذى كتب بعدة enter number :
ملاحظة الفرق بين الاوامر Write - writeline
الامر Write يستخدم للطباعة وأيضا يتم الكتابة بعدة على نفس السطر.
أما أمر Writeline يستخدم أيضا للطباعة ولكن عندما تريد أدخال بيانات يتم أدخالها على السطر التالى وليس نفس السطر.
- ثم قمت باستخدام أمر Readline ليتم عن طريقة أدخال البيانات من لوحة المفاتيح الى المخزن(s) بكل سهولة ويسر.
- ثم قمت بكتابة أمر Convert وهذا الامر من أوامر مكتبة Console ويستخدم فى تحويل البيانات من نوع متغير الى نوع متغير أخر مثل ما فى المثال.
ولقد ذكرنا سابقا أن أمر Readline لا يتعامل مع المتغيرات الرقيمة ولهذا قمت بادخال أمر Convert لكى أقوم بتحول المخزن (ٍs) الذى سوف يتم أدخال البيانات بة الى متغير رقمى ليتم جمة على أساس الارقام بمعنى أننى أذا قمت بجمع المتغيرات من نوع String معا سوف يعطى هذا الرقم 10+11=1110 وليس مجموعم هكذا 21 .
- ثم قمت باستخدام أمر Write مرة أخرى ليبطع على الشاشة enter number.
- ثم قمت باستخدام أمر Readline ليتم عن طريقة السماح لى بادخال البيانات من لوحة المفاتيح الى البرنامج وتكون البيانات التى سوف يتم أدخالها من النوع الرقمى لاننى قمت باستخدام متغير رقمى صحيح من النوع Int وهى أختصار كلمة Integer
- وقمت أيضا بكتابة أمر Convert أخر ليتم تحويل ما يتم أدخالة فى المتغير (s) من النوع النصى الى النوع الرقمى ليتم الحصول على المجموع بصورة صحيحة .
- وقمت أخيرا بكتابة أمر Writeline ليتم عن طريقة طباعة ما سوف يلى هذا الامر ولكن فى هذة المرة صور الامر مختلفة لننى لا أريدة أن يطبع ما بين ال " ما يكتب هنا " ولكننى أريدة أن يقوم بجمع متغييرن من نفس النوع Int لذلك قمت بوضع المتغييرين بدون "" ليتم عمل العملية المنطقية ويقوم بالجمع الصحيح كما فى شكل النتيجة التالية :
---------------------------------------------------------------------------------------------
سوف نبدأ الدرس الثانى باسم الله الرحمن الرحيم نقوم أولا بفتح المشروع الذى قمنا بكتابة فى الدرس الاول :
ويوجد عدة طرق لفتح مشروع موجود من قبل :
- نختار من القائمة الرئيسية كلمة file فتظر تحتها قائمة نختار منها الاختيار open Project فتظهر أمامنا شاشة يوجد فيها مجموعة مجلدات Folders باسماء المشاريع التى أنشأناها سابقا نختار منها ملف البرنامج ونفتحة ونختار البرنامج الذى نريدة كما فى الشاشة التالية.
- أو سوف تلاحظ عن تشغيل البرنامج وجود شاشة باسم Recent Project وفى الجانب الايسر للبرنامج وهى تحتوى على البرامج التى قمت بالتعامل بها فى المارات السابقة كما بالشكل التالى :
----------------------------------------------------------------------------------------------------------------------------------
ملاحظة : أذا قمت باختار كلمة Close بدلا من كلمة Close Soulation فهذا الاختيار يغلق الملف المفتوح فقط ولا يغلق المشروع بالكامل ويستخدم هذا الاختيار هذا الاختيار عندما يريد المبرمج غلق أحد ملفات المشروع فقط وليس المشروع بالكامل.-----------------------------------------------------------------------------------------------------------------------------------
أن لغة السى شارب تحتوى على العديد من المكتبات التى من ضمنها مكتبة System والتى تحتوى تقريبا على جميع الاوامر التى سوف نستخدمها فى عملية البرمجة وأيضا مكتبة System تحتوى فى داخلها على مجموعة من الاوامر كام سوف نرى فيما بعد-----------------------------------------------------------------------------------------------------------------------------------
مثال :خطوات شرح البرنامج :
- لقد قمت أولا بحجز مخزن نصى من النوع String وأعطيت لة الاسم myname.
- قمت بفتح مكتبة Console وأخترت منها الامر Writeline.
أمر Writeline هذا يعتبر أمر من أوامر الطباعة على الشاشة أو بمعنى أخر ما يكتب بعدة يظهر فى النتيجة كما هو.
ملاحظة الامر لا يقبل اللغة العربية - وأيضا شكل الجملة بعدة تاتى بين ("الجملة التى تريد أن تظهر تكتب هنا") ثم (;) لانهاء التعامل مع الامر .
ثم قمت بجعل المتغير (myname) يساوى أمر Readline.
وأمر Readline هو أيضا من ضمن أوامر مكتبة Console وهذا الامر يسمح بادخال البيانات من لوحة المفاتيح الى شاشة التنفيذ مباشرة وهى يعتبر أمر من الاوامر المضافة على اللغة.
وشكل أمر Readline يكون كالاتى console.Readline ثم قوسين () ثم (;).
أمر Readline لا يتعامل مع المتغيرات الرقمية الا عن طريق التحويل.
- ثم قمت بكتابة أمر أخر لطباعة كلمة Hello وما تم أدخالة فى المخزن myname على الشاشة أما ال{0} الذى يوجد على الشاشة لن يتم يظهر على الشاشة لاننى أقصد بة أن يذهب الى أول مخزن بعد (,) أو بعد ال" " ويطبع ما بدخلة ولقد قمت باضافة مسافة لكى لا يطبع الاسم ويكلمة بكلمة Hello والنتيجة تكون كالاتى :
---------------------------------------------------------------------------------------------------------------------------------
مثال أخر لجعل أمر Readline يتعامل مع المتغيرات الرقيمة عن طريق برنامج صغير لجمع أى رقمين :
خطوات شرح البرنامج :
- طبعا قمت بحجز مخزن من النوع String وأعطيتة الاسم s.
- وقمت أيضا بخزن مخزنين أخرين ولكن من النوع Int أى النوع الرقمى الذى يتعامل مع الارقام الصحيحة فقط لا يمكن فى هذا البرنامج جمع الكسور الارقام الصحيحة فقط.
- وقد قمت بكتابة أمر طباعة write ليطبع على الشاشة الاسم الذى كتب بعدة enter number :
ملاحظة الفرق بين الاوامر Write - writeline
الامر Write يستخدم للطباعة وأيضا يتم الكتابة بعدة على نفس السطر.
أما أمر Writeline يستخدم أيضا للطباعة ولكن عندما تريد أدخال بيانات يتم أدخالها على السطر التالى وليس نفس السطر.
- ثم قمت باستخدام أمر Readline ليتم عن طريقة أدخال البيانات من لوحة المفاتيح الى المخزن(s) بكل سهولة ويسر.
- ثم قمت بكتابة أمر Convert وهذا الامر من أوامر مكتبة Console ويستخدم فى تحويل البيانات من نوع متغير الى نوع متغير أخر مثل ما فى المثال.
ولقد ذكرنا سابقا أن أمر Readline لا يتعامل مع المتغيرات الرقيمة ولهذا قمت بادخال أمر Convert لكى أقوم بتحول المخزن (ٍs) الذى سوف يتم أدخال البيانات بة الى متغير رقمى ليتم جمة على أساس الارقام بمعنى أننى أذا قمت بجمع المتغيرات من نوع String معا سوف يعطى هذا الرقم 10+11=1110 وليس مجموعم هكذا 21 .
- ثم قمت باستخدام أمر Write مرة أخرى ليبطع على الشاشة enter number.
- ثم قمت باستخدام أمر Readline ليتم عن طريقة السماح لى بادخال البيانات من لوحة المفاتيح الى البرنامج وتكون البيانات التى سوف يتم أدخالها من النوع الرقمى لاننى قمت باستخدام متغير رقمى صحيح من النوع Int وهى أختصار كلمة Integer
- وقمت أيضا بكتابة أمر Convert أخر ليتم تحويل ما يتم أدخالة فى المتغير (s) من النوع النصى الى النوع الرقمى ليتم الحصول على المجموع بصورة صحيحة .
- وقمت أخيرا بكتابة أمر Writeline ليتم عن طريقة طباعة ما سوف يلى هذا الامر ولكن فى هذة المرة صور الامر مختلفة لننى لا أريدة أن يطبع ما بين ال " ما يكتب هنا " ولكننى أريدة أن يقوم بجمع متغييرن من نفس النوع Int لذلك قمت بوضع المتغييرين بدون "" ليتم عمل العملية المنطقية ويقوم بالجمع الصحيح كما فى شكل النتيجة التالية :
------------------------------------------------------------------------------------------------------------------
وهنا نصل الى نهاية الدرس الثانى وأرجوا من الله أن يكون هذة الدورة مفيدة للجميع
شكرا وتحياتى للجميع
أنتظرونا فى الدرس القادم بأذن الله
mostafa.cs2011@gmail.com
------------------------------------------------------------------------------
Wednesday, January 26, 2011
Subscribe to:
Posts (Atom)