March 27, 2009

Flash Game pt 1

ফ্ল্যাশ খুলিন এবং ব্যাক্রাউন্ড রঙ দিন কাল। এবার লেয়ার ১-এ একটা স্পেসসিপ আকুন। স্পেসসিপটা সিলেক্ট করুন এবং F8 চেপে সেটাকে একটা মুভি ক্লিপ বানিয়ে নিন।




আবার স্পেসসিপটাকে সিলেক্ট করুন এবং এবার ইন্সটেন্ট নাম হিসেবে দিন spaceship


আপনি আপনার স্পেসসিপ ইন্টারনেট থেকেও আনতে পারবেন, কিন্তু মনে রাখবেন যে এটার শুধু সেটা হবে। চতুর্ভুজ ব্যকগ্রাউন্ড সহকারে হতে পারবে না।


এবার মনে রাখতে হবে যে প্লেয়ার ডান-বাম বাটন ব্যবহার করবে। এটা কি করে করতে হবে সেটা এখনে দেখাচ্ছি...


প্রথমে আপনাকে কি দিয়ে বাটনগুলো চালাতে হবে সেটা দিতে হবে। ফাংশানটা হচ্ছে Key.isDown এবং তারপর আপনি আপনার x এবং y স্থান ঠিক করে নিন। .


আমাকে কোডটা দেখাও


এবার দেখি... সকল কোডগুলোকে আমাদের মুভি ক্লিপে দিতে হবে। ক্লিপ ইভেন্ট নিয়ে নিচে লেখা আছে। -



ক্লিপ ইভেন্ট কি?

এটি এমন কিছু যেটা ঘটে। এটি এমন কিছু যেটা মুভি ক্লিপে ঘটে। তার মানে এটা নিশ্চই এটার মুভি ক্লিপের সাথে যোগাযোগ আছে। যখন কোনো মুভি ক্লিপ লোড করতে হয়, তখন অনেক কোড আছে। এখনে দুটা দেখানো হল- load এবং enterFrame। এগুলো কাজ করে যখন মুভি ক্লিপ লোড করা হয়েছে। তখন কোডটা এই হয়-




onClipEvent(load){



// code goes here

}



যেই কোড { ধরনের ব্যাকেটের মধ্যে পরে, সেটা মুভি ক্লিপটাকে চালাবে। এটি প্রধান কাজ করে গেইম বানানোর ক্ষেত্রে। তাই এই টিউটরিয়ালের ভেতর টিউটরিয়াল দেয়া হচ্ছে। enterFrame কাজ করে যখন কোনো নতুন মুভি ক্লিপ নতুন একটা ফ্রেইমে প্রবেশ করে।


কোথায় আপনি ক্লিপ ইভেন্টের কোড লিখবেন? প্রথমে মুভি ক্লিপ সিলেক্ট করুন এবং ডান ক্লিক করে actions-এ টিপ দিন। এখানে আপনি আপনার clipEvent কোড লিখবেন।


স্পিড বসিয়ে দিন


ডান ক্লিক করুন স্পেসসিপটাতে এবং একশনে যান। ***এটা একশন পেনেল নয়*** একশনের উইন্ডোতে লিখুন




onClipEvent(load){


moveSpeed=10;


}



এটা দিয়ে আপনার সিপের স্পিড ১০ দিলেন প্রথমে যখন এটা চালু হবে। এই সংখ্যা পরিবর্তন করে আপনি সিপের স্পিড পরিবর্তন করুন এবং প্লেয়ারকে উপরের লেভেলে উঠিয়ে দিতে পারেন।


কিবোর্ড দিয়ে সিপ নাড়ানো



এখন আপনার কিবোর্ড কিভাবে কাজ করবে সেটা দেখতে হবে। প্লেয়ার ডান বাম বোতাম দিয়ে সিপ নাড়াতে পারবে এই কাজ করতে হবে। সেটার জন্য onClipEvent(load) কোডের নিচে এই কোড দিতে হবে।
onClipEvent (enterFrame) {

if (Key.isDown(Key.RIGHT)) {
this._x+=moveSpeed;
} else if (Key.isDown(Key.LEFT)) {
this._x-=moveSpeed;
}

if (Key.isDown(Key.DOWN)) {
this._y+=moveSpeed;
} else if (Key.isDown(Key.UP)) {
this._y-=moveSpeed;
}
}

এবার আপনি কিবোর্ডের বোতাম ব্যবহার করতে পারবেন। এই কোডটা কি লিখেছে সেটা একটু দেখি। এই কোডটা enterFrame ক্লিপের মধ্যে এবং এটা মানে যখনই নতুন ফ্রেইমে মুভি ক্লপিটা যাবে, তখনই এই কোড চালু হবে। এই কোডটা অনেক অনেকবার ব্যবহার করে দেয়া হয় এবং হবে। এটা লুপে চলে, তাই সেটা বন্ধ করার জন্য আমাদের কোডটাকে বাদ দিতে হবে অথবা মুভি ক্লিপটাকে বন্ধ করতে হবে।


প্রথম if statement চেক করে ডান বোতামটা চাপ দিয়েছে কিনা। এটার নাম Key.RIGHT কোডে। যদি এটা চপ দেয়া হয়, তাহলে এই কোড দিয়ে স্পিড দেয়া হয়েছে this._x+=moveSpeed;


এবং এই দিয়ে নতুন একটা x এর জায়গা দেয়া হয়েছে।


this._x দিয়ে নতুন একটা x স্থান দেয়া হয়েছে মুভি ক্লিপে।


সর্বশেষে moveSpeed কি করেছে সেটা দেখি। মনে রাখবেন moveSpeed ১০-এ আছে যেটা আপনি আগেই দিয়েছেন। তাহলে যদি আপনি বাম বোতামে চেপে থাকেন, তাহলে সেটা -১০-এ চলে যাবে। এই করে নিচে নিচে যেতে থাকবে।


যদি ডান বোতাম চাপা হয়, তাহলে নতুন x স্থান হবে +১০


তাহলে এই হবে কোডটা:



if (Key.isDown(Key.RIGHT)) {

this._x+=moveSpeed;
}

else if (Key.isDown(Key.LEFT)) {

this._x-=moveSpeed;
}

বোঝাচ্ছে যদি x স্থান যোগ হয়, তাহলে ১০ করে যোগ হতেই থাকবে।


এবার উপরে এবং নিচেরটা যোগ করে হবে:



if (Key.isDown(Key.DOWN)) {
this._y+=moveSpeed;
} else if (Key.isDown(Key.UP)) {
this._y-=moveSpeed;

}

এবং এটা ঠিক একই কাজ করে শুধু এটা উপরে এবং নিচের জন্য। এবং এই দুটা যোগ করে কাজ শেষ করতে পারেন arrow keys বিষয়ক।


এবার গুলির কাজ করি


এবার এমন একটা কাজ করতে হবে যে যখন ctrl প্লেয়ার চাপবে, তখনই সেটা গুলি ছাড়বে। এবং মুভিক্লিপটাকে ডুপ্লিকেট করা হবে। এবং এটা লুপে কাজ করতে থাকবে। এবং আপনার মুভি ক্লিপ বাড়ানো হবে। এবং এটা চলতে থাকবে সেই সময় পর্যন্ত যখন পর্যন্ত আপনার x-এর স্থান শেষে চলে যায়। তার মানে স্টেজের শেষ পর্যন্ত।


এবার কিছু লেইজার গুলির ছবি আকুন। নতুন একটা লেয়ার খুলুন এবং কিছু নীল লাইন আকুন যেটা এই কাজ করতে পারবে। আপনাকে বুলেটের মত না আঁকলেও চলবে। এবং সেগুলোকে আপনার একসাথে করে মুভিক্লিপ বানাতে হবে। এবং ইন্সটেন্ট নাম দিন laser।




এবার আমাদের নতুন একটা কোড যোগ করতে হবে সিপের মুভি ক্লিপে।


এবার সিলেক্ট করুন সিপটাকে এবং Window>Actions-এ যান। এবার এই লাইনগুলো যোগ করুন একশনস্ক্রিপটে:



onClipEvent(load){
moveSpeed=10;
_root.laser._visible=false;
laserCounter=1;
}

প্রথম দুই স্টেপে আপনি লেইজারটাকে অদৃশ্য বানালেন যখন প্রথম সিপটা আসে। যখন প্লেয়ার CTRL চাপবে, তখনই এই গুলি বাহির হবে। দ্বিতীয় লাইনে আছে কাউন্টার প্রথমটার মত। আমরা এটাকেই পরে ভেরিএবল হিসেবে ব্যবহার করবো।


এবার সিপের clipEvent- কোড দেই। onClipEvent (enterFrame) { এর পরে এই কোড আপনার দিতে হবে-



if (Key.isDown(Key.CONTROL) {
laserCounter++;
_root.laser.duplicateMovieClip( "laser"+laserCounter, laserCounter );
_root["laser"+laserCounter]._visible=true;

}

এই কোড বলবে যখন Ctrl চাপবেন। এই কোডে আপনি laserCounter ভেরিএবল ঢুকাচ্ছেন।


এবার আমরা প্রায় শেষে লেইজার বানানোর।


সিলেক্ট করুন লেইজার মুভি ক্লিপ এবং Window> Actions এ সিয়ে একশনস্ক্রিপ খুলিন


সেখানে এই কোড লিখুন:



onClipEvent (load) {
laserMoveSpeed=20;
this._y=_root.spaceship._y;
this._x=_root.spaceship._x+80;
}

এবার কিছু enterFrame কোড:



onClipEvent (enterFrame) {

this._x+=laserMoveSpeed;
if (this._x>600){
this.removeMovieClip();
}
}

এই কোড দিয়ে লেইজার ডুপ্লিকেইট করে লেইজার ডান দিকে। কিন্তু যদি x-এর স্থান ৬০০র চেয়ে বেশি হয়ে থাকে, তাহলে এটা নিজে নিজেই চলে যাবে।

No comments:

Post a Comment