টেট্রিসে ব্লকগুলি কীভাবে ঘোরানো যায়


16

আমার কাছে একটি গেমবোর্ড গ্রিড রয়েছে যা 20 টি সারি উঁচু এবং 10 কলাম প্রস্থের (0,0) বাম হাতের উপরের কোণে রয়েছে wide আমার নাটকটিতে একটি টেট্রিমিনো রয়েছে, যা চারটি ব্লকের সমন্বয়ে গঠিত। উপরের বাম দিকের কোণার উত্সের সাথে সম্পর্কিত প্রতিটি ব্লকের আমার কাছে এক্স, ওয়াই অবস্থান রয়েছে। আমার কাছে পাইভটের অবস্থানও রয়েছে, আমি যে বিন্দুটির চারদিকে ঘোরতে চাই তা উপরের বাম দিকের কোণার উত্সের সাথে সম্পর্কিত।

প্রতিটি ব্লকের একটি গেমবোর্ড স্কোয়ারে একটি পূর্ণসংখ্যা অবস্থান থাকে এবং সুতরাং পিভট ব্লকের উদ্যানের মধ্যে যেমন একটি ভগ্নাংশের অবস্থান থাকে (10.5,10.5)

আমার প্রশ্নটি: প্রতিটি ব্লককে পিভটের চারদিকে ঘোরানোর জন্য আমি কোন সূত্র ব্যবহার করতে পারি?

আমি ইতিমধ্যে বিদ্যমান অনুরূপ প্রশ্ন এবং উত্তরগুলির দিকে নজর রেখেছি তবে আমি কাজ পেতে পারি এমন কোনও উত্তর খুঁজে পাইনি।

সাহায্য অনেক প্রশংসা হবে।


গেম ডেভ উপর।

আর যদি তার এখানে ... আমাদেরকে কিছু ডাটা স্ট্রাকচার দেন

আপনি যদি কেবলমাত্র বহু কোণে ঘুরছেন তবে এটি মোটামুটি বেসিক হওয়া উচিত। কেবল কয়েকটি ডায়াগ্রাম আঁকুন এবং আপনার একটি পূর্ণসংখ্যার সমাধান বের করতে সক্ষম হওয়া উচিত।
কেরেক এসবি

3
আমি আসলে ঘূর্ণনগুলি গণনা করতে বিরক্ত করব না, কেবলমাত্র চারটি ঘোরানো সংস্করণকে একটি অ্যারেতে রেখেছি।
ফ্রেডওভারফ্লো

1
@ ফ্রেড ওভারফ্লো কী বলেছিল তাও আমি পরামর্শ দেব। আপনি যদি আমার প্রশ্নটি (যা আপনার অনুরূপ) দেখেন তবে আপনি দেখতে পাবেন যে আমি কীভাবে আমার প্রয়োগের জন্য একটি একক ব্লক সংরক্ষণ করেছি।
bummzack

উত্তর:


21

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

সমস্ত টিট্রোমিনোস একটি সীমানা স্কোয়ারের ভিতরে বিদ্যমান এবং বাধা না থাকলে এই বর্গাকার কেন্দ্রের চারদিকে ঘোরান। প্রস্থ 3 (জে, এল, এস, টি, জেড) এর টেট্রোমিনোগুলি সমতল বর্গের শীর্ষ দুটি সারি এবং (জে, এল এবং টি এর জন্য) সমতল পাশের নিচে রেখে দেওয়া হয়। আমি উপরের মাঝের সারিতে স্থাপন করা হয়েছে।

সমস্ত টিট্রোমিনোস প্রায় 2 টি লুকানো সারিগুলি খেলার মাঠের শীর্ষে থাকে। এগুলি সারিগুলির মাঝখানে বাম দিকে গোল করা হয়। একবার টেট্রোমিনো অবতরণ করার পরে, লকটির বিলম্ব শেষ না হওয়া অবধি এটি লক হয় না। টেট্রিস কোম্পানি কর্তৃক ইনফিনিটি নামে পরিচিত লক বিলম্বের আচরণটি যখনই টেট্রোমিনো সরানো বা ঘোরানো হয় তখন লক বিলম্ব পুনরায় সেট করে। হার্ড ড্রপ সাধারণত আপকে ম্যাপ করা হয়, যার কোনও লক দেরি নেই।

তাদের ঘূর্ণন বাউন্ডিং বাক্সে টেট্রোমিনোস।

আরএস নামে আর একটি প্রচলিত রূপ রয়েছে যা অ্যারিকার টেট্রিস: গ্র্যান্ড মাস্টার গেমসে ব্যবহৃত হয়েছিল।


7

চারদিকে ঘুরার সাধারণ সূত্রটি হ'ল

xNew = x * cos(a) - y * sin(a)
yNew = x * sin(a) + y * cos(a)

90 ডিগ্রি জন্য এটি হয়ে যায়

xNew = -y
yNew = x

সুতরাং, প্রথমে পিট পয়েন্টের তুলনায় তুলনামূলকভাবে ইট কেন্দ্রের স্থানাঙ্কগুলি পান:

x = xBrickCenter - xPivot
y = yBrickCenter - yPivot

তারপরে এগুলি পিভট পয়েন্টের চারদিকে ঘোরান:

x1 = -y = yPivot - yBrickCenter
y1 = x = xBrickCenter - xPivot

এবং তারপরে ঘোরানো বিন্দুতে পিভট স্থানাঙ্কগুলি যুক্ত করুন:

newXBrickCenter = xPivot + x1 = xPivot + yPivot - yBrickCenter
newYBrickCenter = yPivot + y1 = yPivot - xPivot + xBrickCenter

তবে যদি আপনাকে 90 ডিগ্রির গুণিতক দিয়ে ঘোরানোর দরকার হয় তবে আপনি প্রতিটি অভিযোজনের জন্য ইট পজিশনের চারটি সেট সংরক্ষণ করতে পারেন এবং বাস্তবে ঘোরানোর পরিবর্তে তাদের মধ্যে স্যুইচ করতে পারেন।


0

আপনি এই পিভট ব্লকের চারপাশে সমস্ত বর্গক্ষেত্রের রিংগুলি (একটি-মাধ্যমে-এইচ 2 পজিশন, এ-থ্রো-পি দ্বারা 4 পজিশন এবং আরও কিছু) ঘোরান:

এবিসিডিই এমএনওপিএ
পাবসিএফ এলজিবি
Oh.dG -> কেএফ.বিসি
এনজিএফএইচ জেডসিডি
এমএলকেজিআই আইএইচজিএফই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.