আমি কীভাবে একটি কার্ড গেম ডিজাইন করব?


10

আমি আমার কার্ড গেমের জন্য কোনও ভাল স্থাপত্য নিয়ে আসতে পারি না। গেমগুলি সাধারণত কীভাবে ডিজাইন করা হয় তা বুঝতে আমার সহায়তা দরকার।

প্রথমে, আমি গেমের বিধিগুলি বর্ণনা করব।

খেলার নিয়ম

সেটআপ
  • চারজন খেলোয়াড় রয়েছে, প্রতিটি দুজন খেলোয়াড়ই একটি দল গঠন করে।
  • প্রতিটি প্লেয়ার 12 টি শিফल्ड কার্ড পায়
  • টেবিলে 4 টি অন্ধ কার্ড রয়েছে (নদী)
  • খেলোয়াড়দের অর্ডারটি এরকম

এখানে চিত্র বর্ণনা লিখুন

পণ
  • প্রতিটি খেলোয়াড় 100 বা 160 এর মধ্যে বর্তমান বাজির চেয়ে বেশি নম্বর পাস করতে বা নির্বাচন করতে পারে
  • প্রথম প্লেয়ার এবং চেনাশোনা থেকে কোনও দল পাস না হওয়া পর্যন্ত বাজি শুরু হয়
  • কোনও খেলোয়াড় পাস হলে তারা আর বাজি ধরতে পারে না
  • যে দলটি বেটিং রাউন্ডে জয়ী হয় তাদের খেলাটি জিততে কমপক্ষে তাদের বাটের সমান পয়েন্ট সংগ্রহ করা উচিত
  • যে দলটি বাজি রাউন্ডটি হেরেছে তাদের তাদের দলকে তাদের লক্ষ্য অর্জন করতে দেওয়া উচিত নয়

  • যে দলটি বাজি রাউন্ডে জিতেছে তারা যদি সমস্ত পয়েন্ট পায় তবে অন্য দলটি তাদের বাটের সমান নেতিবাচক পয়েন্ট পাবে

  • বাজি রাউন্ড হারানো দলটি যদি সমস্ত পয়েন্ট সংগ্রহ করে তবে অন্য দল দ্বিগুণ নেতিবাচক পয়েন্ট পাবে

গেম প্রবাহ এবং পয়েন্ট সংগ্রহ

  • খেলোয়াড় যে বাজি রাউন্ডে জিতেছে ( রাজা ) টেবিলে বাকি চারটি কার্ড পেয়েছে।
  • তারপরে সে / সে এমনকি খেলেনি তাদের টিম কার্ড ব্যাংকে চারটি কার্ডের সেভ করতে পারে।
  • রাজা শাসকের মামলা হিসাবে একটি মামলা বাছাই করবে এবং অন্যদের তা জানতে দেবে
  • কিং তার হাত থেকে কার্ড টেবিলে রেখে গেমটি শুরু করে। একে অপরের খেলোয়াড়কে এই ক্রমে খেলতে হবে
    • যদি তাদের হাতে সেই কার্ডের স্যুট থাকে তবে তাদের সেই কার্ডগুলির মধ্যে একটি খেলতে হবে
    • যদি তাদের কাছে এটি না থাকে তবে তারা অন্য কোনও মামলা খেলতে পারে
  • অন্য সমস্ত খেলোয়াড়রা তাদের হাত খোলার পরে রাউন্ডের বিজয়ী হবেন:
    • সমস্ত কার্ড এক হলে যার সর্বোচ্চ কার্ড রয়েছে cards
    • যার যদি সর্বোচ্চ "রুলার" কার্ড থাকে তবে তা যদি থাকে
  • রাউন্ডের বিজয়ী কার্ড সংগ্রহ করবেন এবং তাদের ব্যাঙ্কে রাখবেন
  • আগের রাউন্ডে জয়ী খেলোয়াড় পরের রাউন্ডটি শুরু করবে
  • প্রত্যেকের হাত খালি না হওয়া পর্যন্ত এটি চলতে থাকবে

পয়েন্ট গণনা

  • প্রতিটি রাউন্ডে জয়ের 5 পয়েন্ট রয়েছে। এর অর্থ প্রতি 4 টি কার্ডে কমপক্ষে 5 পয়েন্ট রয়েছে।
  • এসে, 10 বা 5 ব্যাঙ্কে প্রতিটি পয়েন্ট যুক্ত করে

আমার নকশা

ক্লাস

class Card {
   string suit;
   string rank
}
class Deck {
  List cards = [];
  List suits = ['S', 'H', 'D', 'C'];
  List ranks = ['1', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
  private void init(){..}
  void shuffle(){...}
}

class Game{
  Deck deck = new Deck();
  Player player1;
  Player player2;
  Player player3;
  Player player4;
  int _isOn = 0;

  Game(this.player1, this.player2, this.player3, this.player4){
    deck.makeCards();
    deck.shuffle();
    start();
  }

  void start(){
    player1.cards.addAll( deck.cards.getRange(0, 12) );
    player2.cards.addAll( deck.cards.getRange(12, 24) );
    player3.cards.addAll( deck.cards.getRange(24, 36) );
    player4.cards.addAll( deck.cards.getRange(36, 48) );
    deck.cards.removeRange(0, 48);
  }

  String toJson(){
  }

  String toString(){
  }
}
class Player{
  String name;
  int points;
  List cards = [];

  Player(this.name, {this.points});

  String toJson(){}

  String toString(){}
}

আমার সমস্যা

এখন যেহেতু আমি এই সমস্ত ক্লাসটি সংজ্ঞায়িত করেছি আমি জানি না কীভাবে এই সংজ্ঞাগুলি একটি ডেটাবেজে (মংগোর মতো) আবদ্ধ করতে এবং গেমের প্রবাহকে নিয়ন্ত্রণ করতে হয়।

  • কোথায় যে সমস্ত যুক্তি যেতে হবে?
  • সার্ভার / ক্লায়েন্টের দৃশ্যে আমার কীভাবে অবস্থা রাখা উচিত?

বিঃদ্রঃ:

আমি এটি প্রোগ্রাম করতে ডার্ট ব্যবহার করছি তবে আমার ডার্টে উত্তরগুলি লেখার দরকার নেই।


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

উত্তর:


10

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

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

সুতরাং আমি আশা করব গেমের কয়েকটি নতুন পদ্ধতি থাকবে যেমন:

getPlayers()        // Get all player info
getCurrentPlayer()  // Get information about the active player in his turn (hand, money to bet with, etc.)
fold()              // Current player folds and current player changes
bet(float amount)   // Current player bets and current player changes

সংক্ষেপে, গেমটি চালানোর জন্য আপনার যা কিছু জানা দরকার, আপনি নিজের অবজেক্টটি ব্যবহার করে এটি করতে পারেন Gameএটি একবার হলে আপনি দ্বিতীয় ধাপে এগিয়ে যান।

একটি পৃথক শ্রেণি লিখুন যার একমাত্র উদ্দেশ্য আগত অনুরোধগুলি গ্রহণ করা, তাদের প্রয়োগ করুন Gameএবং আউটপুটটি ব্যবহারকারীর কাছে ফেরত পাঠানো। আপনি যদি Gameআউটপুটটিকে JSON এ রূপান্তর করতে চান তবে আপনি এটির বাইরে করুন Gameকারণ এটি উদ্দেশ্য নয় Game!

এই তথ্য অবিরত রাখতে, আপনি অন্য একটি শ্রেণি তৈরি করতে পারেন যা মঙ্গোডিবিতে একটি ইন্টারফেস সরবরাহ করে। এই শ্রেণিটি এই শ্রেণীর অস্তিত্ব সম্পর্কে জানত Gameনা এবং Gameজানত না ।

সংক্ষেপে, পৃথক উপাদানগুলিতে মনোনিবেশ করুন এবং আপনি ভাল থাকবেন। আপনি যখন নিজের প্রোগ্রামটি লেখার সময় অনেকগুলি বিষয় বিবেচনায় নেওয়ার চেষ্টা করছেন তখন আপনি ভুল হতে শুরু করেন। একজন বিজ্ঞ প্রফেসর হিসাবে একবার আমাকে বলেছিলেন, " আপনি কোনও প্রকল্পের জন্য যে প্রথম প্রোগ্রামটি লেখেন তা শেষের মধ্যে পুরোপুরি পুনরায় লেখা হবে এই বিষয়টি জেনে নিন এবং আলিঙ্গন করুন। "


পাশাপাশি, সেই ব্যক্তির উপর নির্ভর করে এই সংখ্যাটি 3 থেকে 9 এর মধ্যে যে কোনও জায়গায় রয়েছে - আমি কতটা সতর্ক থাকি তার উপর নির্ভর করে আমি 4 বা 5 করতে পারি। স্বাভাবিক পরীক্ষাটি হ'ল বিন্দুগুলির একগুচ্ছ দিকে লক্ষ্য করা এবং মানসিকভাবে দলবদ্ধ না করে আপনি স্বতন্ত্রভাবে কতজন বুঝতে পারবেন তা নির্ধারণ করা - 6 এ, আমি স্বয়ংক্রিয়ভাবে তাদেরকে 3 + 3 তে ভাগ করতে শুরু করি, উদাহরণস্বরূপ, এবং এগুলি আবার সহজে আলাদা করতে পারছি না ।
ইজকাটা

@ ইজকাটা এটি আকর্ষণীয়। আমি জানতাম না যে এর জন্য একটি পরীক্ষা আছে। আপনার কি লিংক আছে?
নীল

1
en.wikedia.org/wiki/… এর উত্স, আমি বিশ্বাস করি।
আকাশম

1

কোথায় যে সমস্ত যুক্তি যেতে হবে?

এটি আপনার Gameক্লাসে রেখে দিয়ে শুরু করুন ।

এটি সীমিত সংখ্যক রাজ্যের একটি নিয়ম ভিত্তিক খেলা। আমি এটি একটি রাষ্ট্রীয় যন্ত্র হিসাবে মডেল করব । রাষ্ট্র প্যাটার্ন আপনি অত্যন্ত সাহায্য করবে।

শেষ পর্যন্ত আপনি সেই এফএসএম পৃথক শ্রেণিতে (এস) এ বের করতে চাইবেন, তবে আপাতত সে সম্পর্কে চিন্তা করবেন না।

সার্ভার / ক্লায়েন্টের দৃশ্যে আমার কীভাবে অবস্থা রাখা উচিত?

আপনার সেটআপ সম্পর্কে আরও না জেনে উত্তর দেওয়া অসম্ভব। আপনার গেমের অবজেক্টকে সিরিয়ালকরণ করা এবং প্রতিটি ঘুরে ডাটাবেসে স্ট্যাটাস দেওয়া কৌতুকটি করতে পারে।


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