৬১

Re: প্রোগ্রামারদের আড্ডা!

isee এতগুলা প্রোগ্রাম, আর সি ই শেখা হলনা আমার। এই সেমিস্টারে নাকি সি++ হবে।

মিনহাজুল হক শাওন'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

৬২

Re: প্রোগ্রামারদের আড্ডা!

সারিম লিখেছেন:

অ্যাপল আপনার নামে মামলা করতে পারে tongue

সফটওয়্যারটি যদি ফ্রি হয় সেক্ষেত্রে?

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

৬৩

Re: প্রোগ্রামারদের আড্ডা!

সারিম লিখেছেন:

অ্যাপল আপনার নামে মামলা করতে পারে tongue

যদি কোম্পানীটা এ্যাপল হয়, তাহলে করতেও পারে, কানার দল একটা। (মেজাজ খারাপের ইমো)
কথা হচ্ছে, আমি ছোট্ট একটা এ্যাপ বানিয়েছি, সেটা আমি কমার্শিয়ালি পাবলিশ করি নি, এবং এপ্লিকেশনটা একই নামের অন্যকোন এপ্লিকেশনের লক্ষ্যকেও কনফ্লিক্ট করে না। সেক্ষেত্রে মামলা করার কোন যুক্তি আমি দেখি না। অন্তত TimeMachine শব্দটি যদি এ্যাপলের কপিরাইট না করানো থাকে, তাহলে তো প্রশ্নই উঠে না। TimeMachine একটা আলাদা টার্ম যেটা সম্পূর্ন একটা অর্থ নিয়ে এ্যপলের জন্মের আগে থেকেই আছে।

৬৪

Re: প্রোগ্রামারদের আড্ডা!

আচ্ছা, শব্দ কপিরাইট করে নাকি ট্রেডমার্ক হিসেবে নিবন্ধন করে?

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

৬৫

Re: প্রোগ্রামারদের আড্ডা!

অয়ন খান লিখেছেন:

আচ্ছা, চলক ঘোষণা করার সবচেয়ে ভাল পদ্ধতি কী?

মানে a, b, c, x, y, z, english, math, science নাকি A, B, C, X, Y, Z, English, Math, Science?

C , VB, MBD ,CMD..কোনটা র চলক ঘোষণা করার পদ্ধতি জানতে চান ?
C  তে  a, b, c, x, y, z, english, math, science এগুলো ই ভালো

এই ব্যাক্তির সকল লেখা কাল্পনিক , জীবিত অথবা মৃত কারো সাথে মিল পাওয়া গেলে তা সম্পুর্ন কাকতালীয়, যদি লেখা জীবিত অথবা মৃত কারো সাথে মিলে যায় তার দায় এই আইডির মালিক কোনক্রমেই বহন করবেন না। এই ব্যক্তির সকল লেখা পাগলের প্রলাপের ন্যায় এই লেখা কোন প্রকার মতপ্রকাশ অথবা রেফারেন্স হিসাবে ব্যবহার করা যাবে না।

৬৬

Re: প্রোগ্রামারদের আড্ডা!

ভাই আমি নিজেকে এখনও কোন প্রোগ্রামার হিসাবে ভাবিনা।
তবে php নিয়ে ঘাঁটাঘাঁটি করছি।  mail তেমন কঠিন মনে হচ্ছেনা।
সামনে কি করতে পারব জানিনা।  dream

এই টপিক থেকে কিছু জানতে পারলাম। অয়ন ভাইকে ধন্যবাদ।  clap

আল্লাহ এক, অদ্বিতীয় ও সর্ব শক্তিমান।

৬৭

Re: প্রোগ্রামারদের আড্ডা!

নেমিং কনভেনশন (প্রোগ্রামিং) শিরোনামে উইকিপিডিয়াতে চমৎকার একটি এন্ট্রি পেলাম। smile

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

৬৮

Re: প্রোগ্রামারদের আড্ডা!

ডটনেট (সি#) -এর জন্য প্রচুর স্টাইল গাইড পাওয়া যায়:

Coding Guidelines - http://www.mono-project.com/Coding_Guidelines

Microsoft - Design Guidelines for Class Library Developers - http://msdn.microsoft.com/en-us/library/ms229042.aspx

IDesign C# Coding Standard -http://www.idesign.net/idesign/download … andard.zip

Dan Rigsby C# Coding Standards - http://www.danrigsby.com/Files/csharpco … ndards.doc

SubMain C# / VB.NET Coding Guidelines - http://submain.com/products/guidelines.aspx

Lance Hunt - C# Coding Standards - http://weblogs.asp.net/lhunt/archive/20 … sv113.aspx

DotNetSpider - C# Coding Standards and Best Programming Practices - http://www.dotnetspider.com/tutorials/B … tices.aspx

Microsoft – C# Programming Guide - http://msdn.microsoft.com/en-us/library/67ef8sbd.aspx

Phillips Medical Systems - Coding Standard C# - http://www.tiobe.com/content/paperinfo/gemrcsharpcs.pdf

সাধারণ নিয়মটা হলো - যখন যে ভাষা ব্যবহার করছেন তখন শুধু সে ভাষার কনভেনশন মেনে চলা। যেমন, পাইথন এবং সি#-এর স্টাইল গাইডলাইন আলাদা। কেউ যদি পাইথনে সি# স্টাইলে কোড করে তাহলে বোকামী হবে। পাইথনে কোডিং করতে গেলে পাইথন কোডিং কনভেনশন মেনেই করা উচিৎ।

Calm... like a bomb.

৬৯

Re: প্রোগ্রামারদের আড্ডা!

ধন্যবাদ, ইনভারব্রাস ভাই। smile

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

৭০

Re: প্রোগ্রামারদের আড্ডা!

কী কম্বাইনিং এর ব্যাপারে কেউ কি কিছু বলতে পারেন।
মাল্টিপল কি স্ট্রোক একটা কীতে এসাইন করা যায় কিভাবে?
ধরাযাক একটা গেম খেলার সময় একটা স্পেশাল মুভের জন্য "ডাউন অ্যারো", "ল্যাফ্ট অ্যারো", "F" পরপর দ্রুত চাপতে হয়। এমন কিছু কি বানানো যাবে যা দিয়ে এই মুভটা একটা কী দিয়ে করা যাবে যেমন শুধু "R" চেপে (গেমটিতে R কী কোন ফাংশানালিটি নেই)?
মাইক্রোসফ্ট কিবোর্ড লেআউট ক্রিয়েটর সমন্ধে কেউ কি কিছু জানেন?

৭১

Re: প্রোগ্রামারদের আড্ডা!

সদস্য_১ লিখেছেন:

কী কম্বাইনিং এর ব্যাপারে কেউ কি কিছু বলতে পারেন।
মাল্টিপল কি স্ট্রোক একটা কীতে এসাইন করা যায় কিভাবে?
ধরাযাক একটা গেম খেলার সময় একটা স্পেশাল মুভের জন্য "ডাউন অ্যারো", "ল্যাফ্ট অ্যারো", "F" পরপর দ্রুত চাপতে হয়। এমন কিছু কি বানানো যাবে যা দিয়ে এই মুভটা একটা কী দিয়ে করা যাবে যেমন শুধু "R" চেপে (গেমটিতে R কী কোন ফাংশানালিটি নেই)?
মাইক্রোসফ্ট কিবোর্ড লেআউট ক্রিয়েটর সমন্ধে কেউ কি কিছু জানেন?

SendKeys ফাংশন ইউজ করে দেখতে পারেন। তবে যদি গেমটি ফুল স্ক্রিনে চলে তাহলে এটা হয়ত কাজ করবে না। কিন্তু যদি গেমটি কোন উইন্ডো তৈরী করে চলে তাহলে কাজ করার কথা।

Feed থেকে ফোরাম সিগনেচার, imgsign.com
ব্লগ: shiplu.mokadd.im
মুখে তুলে কেউ খাইয়ে দেবে না। নিজের হাতেই সেটা করতে হবে।

শিপলু'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

৭২

Re: প্রোগ্রামারদের আড্ডা!

ভিজ্যুয়াল স্টুডিওতে একটি কার্ড গেমের ইন্টারফেস ডিজাইন করতে চাচ্ছিলাম...

চারপাশে চারটা (খালি) প্যানেল নিলাম, এই প্যানেল গুলোতে প্রোগ্রামাটিকালি ছোট ছোট প্যানেলে ব্যাকগ্রাউন্ড ইমেজ হিসেবে কার্ডগুলো সেট করলাম। কিন্তু কিছুই হল না।

অনেক চেষ্টা করলাম, কোন কাজের আইডিয়া পেলাম না। কারো কোন আইডিয়া আছে?

৭৩

Re: প্রোগ্রামারদের আড্ডা!

শিপলু লিখেছেন:

SendKeys ফাংশন ইউজ করে দেখতে পারেন। তবে যদি গেমটি ফুল স্ক্রিনে চলে তাহলে এটা হয়ত কাজ করবে না। কিন্তু যদি গেমটি কোন উইন্ডো তৈরী করে চলে তাহলে কাজ করার কথা।

ধন্যবাদ শিপলু ভাই।
Application.SendKeys অথবা System.Windows.Forms.SendKeys
এপ্লিকেশন অথবা ফরম লেভেল ইভেন্ট রেইজ করে। ওএস বা গ্লোভাল লেভেলে করে না। আমি স্ট্রিট ফাইটার গেমটার কথা বলছিলাম এটা ফুলস্ক্রিন বা উইন্ডো দু মুডেই চালানো যায়।
http://www.codeproject.com/KB/system/CSLLKeyboard.aspx
এখানে একটা ভাল আর্টিকেল পেলাম। এর উপর ভিত্তি করে আগালে হয়ত হবে। কাজটা যতটা সহজ ভেবেছিলাম ততটা সহজ না।




শুকসারি লিখেছেন:

ভিজ্যুয়াল স্টুডিওতে একটি কার্ড গেমের ইন্টারফেস ডিজাইন করতে চাচ্ছিলাম...
চারপাশে চারটা (খালি) প্যানেল নিলাম, এই প্যানেল গুলোতে প্রোগ্রামাটিকালি ছোট ছোট প্যানেলে ব্যাকগ্রাউন্ড ইমেজ হিসেবে কার্ডগুলো সেট করলাম। কিন্তু কিছুই হল না।
অনেক চেষ্টা করলাম, কোন কাজের আইডিয়া পেলাম না। কারো কোন আইডিয়া আছে?


না হওয়ার তো কারন দেখি না। panel1 এ ১০টা গ্রে শেডের নতুন প্যানেল এড করুন নিচের মত করে।

            panel1.BackColor = Color.Green;
            panel1.Size = new Size(300, 300);

            for (int i = 0; i < 100; i=i+10)
            {
                Panel p = new Panel();
                p.Location = new Point(i, i);
                p.BackColor = Color.FromArgb(i,i,i);
                p.Size = new Size(100, 100);

                panel1.Controls.Add(p);
            }

৭৪

Re: প্রোগ্রামারদের আড্ডা!

1.    Panel[] Player1 = new Panel[8];
2.
3.    panel1.BackColor = Color.Gray;
4.    panel2.BackColor = Color.Gray;
5.    for (byte i = 0; i < 100; i += 20)
6.    {
7.        Player1[i].Location = new Point(i, 0);
8.        Player1[i].BackColor = Color.FromArgb(i, i, i);
9.        Player1[i].Size = new Size(75, 100);
10.
11.        panel1.Controls.Add(Player1[i]);
12.    }

এভাবে দিলাম... কিন্তু বলে Object reference not set to an instance of an object.
প্রবলেমটা হয় ৭ নম্বর লাইনে।

৭৫

Re: প্রোগ্রামারদের আড্ডা!

শুকসারি লিখেছেন:

এভাবে দিলাম... কিন্তু বলে Object reference not set to an instance of an object.
প্রবলেমটা হয় ৭ নম্বর লাইনে।

প্রথমত আপনাকে প্যানেল অবজেক্ট তৈরী করতে হবে। আপনি নিউ কিওয়ার্ডের মাধ্যেমে ১নং লাইলে অ্যারে তৈরী করেছেন। কিন্তু কোথাও প্যানেল তেরী করেননি। ফর লুপের ভিতরে ৭নং লাইনের উপরে লিখতে পারেন

Player1[i] = new Panel();

দ্বিতীয়ত আপনার কাউন্টার ঠিক করুন। আপনি অ্যারে ঘোষনা করেছেন ৮ টি কিন্তু প্রথম লুপের পরেই i এর মান হবে ২০! হয় অন্য আরেকটা ইন্ডেক্স ভেরিয়েবল যোগ করুন না হয় i কে ২০ দিয়ে ভাগ করুন।

৭৬

Re: প্রোগ্রামারদের আড্ডা!

থ্যাঙ্কস আ লট...

কিন্তু এই ছোট প্যানেলগুলোতে ক্লিক ইভেন্ট ক্যাচ করব কীভাবে?

    private void Player1[0]_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Hi");
    }

এভাবে লিখলাম... কিন্তু হবে বলে মনে হচ্ছে না।
আরো কোথাও কি কিছু করতে হবে?

৭৭ সর্বশেষ সম্পাদনা করেছেন invarbrass (০৪-১০-২০১১ ১৪:৫৪)

Re: প্রোগ্রামারদের আড্ডা!

শুকসারি লিখেছেন:

থ্যাঙ্কস আ লট...

কিন্তু এই ছোট প্যানেলগুলোতে ক্লিক ইভেন্ট ক্যাচ করব কীভাবে?

    private void Player1[0]_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Hi");
    }

এভাবে লিখলাম... কিন্তু হবে বলে মনে হচ্ছে না।
আরো কোথাও কি কিছু করতে হবে?

প্রতিটি প্যানেল অব্জেক্ট ইনিশিয়ালাইয করার সময়ই একটি কমন Click() হ্যান্ডলার সেট করে দিনঃ

Player1[i] = new Panel();
...
Player1[i].Click += (o, e) => MessageBox.Show(string.Format("Click was called by {0}.", o.ToString()));
Calm... like a bomb.

৭৮ সর্বশেষ সম্পাদনা করেছেন সদস্য_১ (০৪-১০-২০১১ ২১:৪২)

Re: প্রোগ্রামারদের আড্ডা!

লো-লেভেল কী প্রেস মডিফিকেশন: এখনো চেষ্টা করে যাচ্ছি। যা করতে পেরেছি তা নিন্মরুপ:

SetWindowsHookEx ব্যাবহার করে ওএস লেভেলে কীবোর্ড/মাউস ইভেন্টের সাথে এপ্লিকেশন কে যোগ করতে পারি। কোন কী প্রেস করল সেটা মনিটর করতে পারি। অন্য এপ্লিকেশ ফোকাস থাকা অবস্থাতেও। এবং CallNextHookEx মেথড ব্যাবহার করে ইভেন্টা "হাই ওয়েতে" ফেরত পাঠাতে পাঠাতে পারি যাতে যেই এপ্লিকেশন এই কী প্রসে ইভেন্টা পাওয়ার কথা সেই এপ্লিকশন ইভেন্টা পেতে পারে।

যদি আমি চাই ইভেন্টা কিল করে দিতে সে ক্ষেত্রে দুই ভাবে করতে পারি। UnhookWindowsHookEx মেথড ব্যাবহার করে অথবা CallNextHookEx মেথডে ফলস্‌ পয়েন্টার ব্যাবহার করে যেমন return (System.IntPtr)1; সে ক্ষেত্রে এপ্লিকেশন যার উদ্দেশ্য কী প্রেস করা হয়েছিল সেই এপ্লিকেশন ইভেন্টা পাবে না।

যা করতে চাচ্ছি তাহল:
কী প্রেস ইভেন্টা মডিফাই করতে। কিল করতে নয়। যেমন আমি চাই যদি ইউজার "A" প্রেস করে প্রাপক এপ্লিকেশনের কাছে "B" পাঠাতে। KeyboardHookEventArgs এর keyCode মডিফাই করে দেখেছি কোন কাজ হয়না। মনেহয় পয়েন্টার দিয়ে মডিফাই করতে হবে। অথবা সম্পূর্ন নতুন ইভেন্ট তৈরী করতে হবে। সেটাই পারছিনা।

নোট: এই মেথড গুলোর জন্য  user32.dll ব্যাবহার করতে হয়।
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]

৭৯

Re: প্রোগ্রামারদের আড্ডা!

সদস্য_১ লিখেছেন:

কী প্রেস ইভেন্টা মডিফাই করতে। কিল করতে নয়। যেমন আমি চাই যদি ইউজার "A" প্রেস করে প্রাপক এপ্লিকেশনের কাছে "B" পাঠাতে। KeyboardHookEventArgs এর keyCode মডিফাই করে দেখেছি কোন কাজ হয়না। মনেহয় পয়েন্টার দিয়ে মডিফাই করতে হবে। অথবা সম্পূর্ন নতুন ইভেন্ট তৈরী করতে হবে। সেটাই পারছিনা।

Does the following snippet work?  thinking

IntPtr HookCallback(int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam)
{
    if (nCode >= 0)
    { 
       // modify key-code "A" (65) to "B" (66)
        var a2b = (wParam == (IntPtr)0x41) ? (IntPtr)0x42 : wParam;
        return CallNextHookEx(hookID, nCode, a2b, ref lParam);
    }
    return CallNextHookEx(hookID, nCode, wParam, ref lParam);
}
Calm... like a bomb.

৮০

Re: প্রোগ্রামারদের আড্ডা!

ধন্যবাদ ইনভারব্রাস ভাই। কিন্তু কাজ হয়না।
পরিবর্তন ছাড়া CallNextHookEx পাস করা ভেরিয়েবল গুলো প্রিন্ট করলাম
(A কী চাপলে )
hookID: 21693727, nCode: 0, wParam: 256, lParam.vkCode: 65, lParam.flags: 0
(B কী চাপলে)
hookID: 21693727, nCode: 0, wParam: 256, lParam.vkCode: 66, lParam.flags: 0
(C কী চাপলে)
hookID: 21693727, nCode: 0, wParam: 256, lParam.vkCode: 67, lParam.flags: 0
তার মানে হয় চেঞ্জটা করতে হবে lParam অথবা hookID যেখানে পয়েন্ট করছে সেখানে।