একটি ব্যবহারকারী প্রোফাইল মিনি গেম তৈরি করুন


49

গতকাল, আমি খুব চতুর জিনিস হোঁচট খেয়েছি।

মিনিটেকের টিক-ট্যাক-টো প্রোফাইল গেম

হ্যাঁ, এটি ব্যবহারকারীর প্রোফাইল পৃষ্ঠায় টিকি-ট্যাক-টোয়ের একটি কার্যকরী বাস্তবায়ন@minitech । অবশ্যই, আমি এটি দেখতে পাওয়ার মুহুর্তটি, আমাকে তার ধারণাটি বিপরীত করতে হয়েছিল এবং তাকে ওয়ান আপ করতে হয়েছিল : পি

মেল্লামবাকের টাওয়ার হ্যানই প্রোফাইল গেম

এখানে আমার নিজের উদাহরণটি সরাসরি পোস্টে এম্বেড করা হয়েছে। এটি বাস্তবায়নের কয়েকটি বিবরণের কারণে আমি একটি বাগ বাগী হয়েছি যার জন্য আমি ভাল সমাধানের কাজ করিনি। কখনও কখনও আপনি কোনও পেগ ক্লিক করার পরে, অন্য পৃষ্ঠাটি রিফ্রেশ না হওয়া পর্যন্ত এটি সঠিকভাবে আপডেট হয় না:

হ্যানয়ের টাওয়ার

http://hanoi.kurtbachtold.com/hanoi.php/text

http://hanoi.kurtbachtold.com/hanoi.php/1 http://hanoi.kurtbachtold.com/hanoi.php/2 http://hanoi.kurtbachtold.com/hanoi.php/3

রিসেট

আপনি আরও ভাল করতে পারেন?

  • আপনার পোস্ট করা উত্তরে (বা আপনার ব্যবহারকারী প্রোফাইল পৃষ্ঠা) একটি কার্যকারী গেম তৈরি করুন। এটি আপনার নিজের একটি ওয়েবসারভার যথাযথভাবে কনফিগার করার মাধ্যমে (বা কোনও ওয়েবসভার হিসাবে কাজ করে এমন একটি প্রোগ্রাম লেখার) মাধ্যমে এবং এর মাধ্যমে কোনও পোস্টে বিষয়বস্তু এম্বেড করে ব্যবহারকারীকে গেমকে কী আদেশ দিচ্ছে তা নির্ধারণ করার জন্য রেফারার ব্যবহার করে এটি করা হয়।
  • কানাডা ধারণা (সর্বাধিক ভোট) প্রতিযোগিতা জিতেছে, কানাডা দিবসের মাধ্যমে (রবিবার, 1 জুলাই, 2012 @ 11:59 পিএম EST)
  • টাই হওয়ার সময়, পুরানো উত্তরটি জিতে যায়।

1
+1 সাধারণ, তবে উজ্জ্বল ধারণা! বিটিডাব্লু - সময়সীমাটির জন্য আমি মনে করি আপনার অর্থ ২ জুন , ২০১২.
ক্রিশ্চিয়ান লুপাস্কু

ডার্প, হ্যাঁ আমি করেছি, ধন্যবাদ :)
মেল্লামব্যাক

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

4
আমি কেবল লক্ষ্য করেছি যে মিনিটেকের এআই টিক-ট্যাক-টোয়ের একটি নিখুঁত খেলা খেলতে পারে না। প্লে সেন্টার, নীচে-বাম, শীর্ষ-কেন্দ্র, কেন্দ্র-ডান, কেন্দ্র-বাম।
PhiNotPi

1
@ মিঃ উইজার্ড: এফএফ 12.0 এবং উইন্ডোজ 7 এ এখানে সূক্ষ্মভাবে কাজ করা, আপনি কী কাজ করছেন না সে সম্পর্কে আরও বিশদ পোস্ট করতে পারেন?
ক্রিস্টোফিড

উত্তর:


27

কনওয়ের গেম অফ লাইফ

+1 প্রজন্ম - +5 প্রজন্ম - জুম ইন - জুম আউট

লোড প্যাটার্ন: র্যান্ডম - গ্লাইডার - gunstar - শামুক - lwss - lightspeedoscillator1 - গেলাস

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

হালনাগাদ:

অজগর নিয়ে আমি কিছু মজা করেছি এবং বেশ কয়েকটি বৈশিষ্ট্য এবং উন্নতি যুক্ত করেছি:

  • জনসংখ্যা গণনা, জুম এবং নাম সহ এইচইউডি যুক্ত করা হয়েছে
  • Rle বিন্যাসে প্যাটার্নগুলি এখন প্যারামিটার ব্যবহার করে ( দীর্ঘ তালিকা , মাধ্যমে ) লোড করা যাবে pattern(যেমন ?pattern=glider)। ফাইলসাইজটি 1.5 কেবি সীমাবদ্ধ
  • nextপ্যারামিটারটি ব্যবহার করে একবারে 5 টির মধ্যে সীমাবদ্ধ, প্রজন্মকে ফরোয়ার্ড করতে পারে
  • কিছুটা উন্নত অ্যালগরিদম। যদিও এটি সত্যই দ্রুত নয়, আমি চাই এটি সরল থাকুক
  • এটি এখন এককভাবে কাজ করে (হয় রেফারার বা তার নিজস্ব কোয়েরি স্ট্রিং ব্যবহার করে): https://copy.sh/fcgi-bin/Live2.py?pattern=gosperglidergun


sessions = {}

WIDTH = 130
HEIGHT = 130
RULE = (3,), (2, 3)

def read_pattern(filename, offset_x, offset_y):

    filename = PATH + filename + '.rle.gz'

    try:
        if os.stat(filename).st_size > 1500:
            return ['pattern too big', set()]
    except OSError as e:
        return ['could not find pattern', set()]

    file = gzip.open(filename)

    x, y = offset_x, offset_y
    name = ''
    pattern_string = ''
    field = []

    for line in file:
        if line[0:2] == '#N':
            name = line[2:-1]
        elif line[0] != '#' and line[0] != 'x':
            pattern_string += line[:-1]

    for count, chr in re.findall('(\d*)(b|o|\$|!)', pattern_string):
        count = int(count) if count else 1

        if chr == 'o':
            for i in range(x, x + count):
                field.append( (i, y) )
            x += count
        elif chr == 'b':
            x += count
        elif chr == '$':
            y += count
            x = offset_x
        elif chr == '!':
            break

    file.close()

    return [name, set(field)]



def next_generation(field, n):

    for _ in range(n):

        map = {}

        for (x, y) in field:
            for (i, j) in ( (x-1, y-1), (x, y-1), (x+1, y-1), (x-1, y), (x+1, y), (x-1, y+1), (x, y+1), (x+1, y+1) ):
                map[i, j] = map[i, j] + 1 if (i, j) in map else 1

        field = [
            (x, y)
            for x in range(0, WIDTH)
            for y in range(0, HEIGHT)
            if (x, y) in map
            if ( (map[x, y] in RULE[1]) if (x, y) in field else (map[x, y] in RULE[0]) )
        ]

    return field


def life(env, start):


    if 'REMOTE_ADDR' in env:
        client_ip = env['REMOTE_ADDR']
    else:
        client_ip = '0'

    if not client_ip in sessions:
        sessions[client_ip] = read_pattern('trueperiod22gun', 10, 10) + [2]

    session = sessions[client_ip]

    if 'HTTP_REFERER' in env:
        query = urlparse.parse_qs(urlparse.urlparse(env['HTTP_REFERER']).query, True)
    elif 'QUERY_STRING' in env:
        query = urlparse.parse_qs(env['QUERY_STRING'], True)
    else:
        query = None

    timing = time.time()

    if query:
        if 'next' in query:
            try:
                count = min(5, int(query['next'][0]))
            except ValueError as e:
                count = 1
            session[1] = set( next_generation(session[1], count) )
        elif 'random' in query:
            session[0:2] = 'random', set([ (random.randint(0, WIDTH), random.randint(0, HEIGHT)) for _ in range(800) ])
        elif 'pattern' in query:
            filename = query['pattern'][0]
            if filename.isalnum():
                session[0:2] = read_pattern(filename, 10, 10)
        elif 'zoomin' in query:
            session[2] += 1
        elif 'zoomout' in query and session[2] > 1:
            session[2] -= 1

    timing = time.time() - timing

    start('200 Here you go', [
        ('Content-Type', 'image/svg+xml'), 
        ('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0'), 
        ('Expires', 'Tue, 01 Jan 2000 12:12:12 GMT')
    ])

    pattern_name, field, zoom = session

    yield '<?xml version="1.0" encoding="UTF-8"?>'
    yield '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'
    yield '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="400px" height="200px">'
    yield '<!-- finished in %f -->' % timing
    yield '<text x="0" y="10" style="font-size:10px">Population: %d</text>' % len(field)
    yield '<text x="100" y="10" style="font-size:10px">Zoom: %d</text>' % zoom
    yield '<text x="180" y="10" style="font-size:10px; font-weight:700">%s</text>' % pattern_name
    yield '<line x1="0" y1="15" x2="666" y2="15" style="stroke:#000; stroke-width:1px" />'

    for (x, y) in field:
        yield '<rect x="%d" y="%d" width="%d" height="%d"/>' % (zoom * x, zoom * y + 20, zoom, zoom)

    yield '</svg>'


from flup.server.fcgi import WSGIServer
import random
import re
import gzip
import os
import urlparse
import time

WSGIServer(life).run()

আপনি আমার কোডটি অজগর রোডকজি জমা দেওয়ার জন্য একটি টেমপ্লেট হিসাবে নিতে পারেন।


+1 দুর্দান্ত! একটি পরামর্শ: #5946আপনার লিঙ্কগুলিতে সংযোজন করুন এবং এটি প্রতিটি আপডেটের পরে আপনার পোস্টে ফিরে যাবে।
মেল্লামোকব

হুম .. কমপক্ষে এটি কাজ করার সময় আমি চেষ্টা করেছিলাম .. আহ। কারণ হ্যানয়ের টাওয়ারগুলিতে আপনি সর্বদা বিভিন্ন পেগ-এ ক্লিক করেন। হুম
mellamokb

@ মেল্লামোকব এটি কাজ করে, তবে আপনি একই লিঙ্কটি এখনই দু'বার ক্লিক করতে পারবেন না
অনুলিপি করুন

ইয়া, আমি ঠিক বুঝতে পেরেছি যে লোল। অনুমান করুন আপনি একটি দাবি অস্বীকার করতে পারেন যে পরবর্তী প্রজন্মটি nextকরার সময়, প্রথম বারের পরে বারবার লিঙ্কটি ক্লিক করার পরিবর্তে কেবল ভবিষ্যতের পুনরাবৃত্তির জন্য F5 চাপুন ।
মেল্লামোকব

1
@ মেল্লামোকব ধন্যবাদ আমার মতে আপনার এই প্ল্যাটফর্মে উত্তরগুলি সত্যই গ্রহণ করার দরকার নেই, কারণ দেখে মনে হচ্ছে চ্যালেঞ্জটি বন্ধ রয়েছে
অনুলিপি করুন

35

সি # - স্ট্যাক এক্সচেঞ্জ হ্যাঙ্গম্যান

এই হ্যাঙ্গম্যান গেমটিতে স্ট্যাক এক্সচেঞ্জের ওয়েবসাইটগুলির নাম অনুমান করুন:



A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
New game


এটি ASP.NET MVC 3.0 ব্যবহার করে করা হয়েছিল । এখানে কোড এর Controllerযে কৌতুক আছে:

public class HangmanController : Controller
{
    public ActionResult Index()
    {
        var game = Session["hangman"] as HangmanGame ?? HangmanGame.New();

        game = ExecuteGameCommand(game);

        Session["hangman"] = game;

        var imageRenderer = new HangmanImageRenderer(game);
        return new ImageResult(imageRenderer.Render());
    }

    private HangmanGame ExecuteGameCommand(HangmanGame game)
    {
        var referrerQuery = Request.UrlReferrer != null ? Request.UrlReferrer.Query : string.Empty;

        if (referrerQuery.Contains("_new_hangman_"))
            return HangmanGame.New();

        if(game.IsOver())
            return game;

        var chosenLetter = HangmanGame.ValidLetters
            .FirstOrDefault(letter => referrerQuery.Contains(String.Format("_hangman_{0}_", letter)));

        if (chosenLetter != default(char))
            game.RegisterGuess(chosenLetter);

        return game;
    }
}

এই কোডটি ব্যতীত, আরও তিনটি শ্রেণি রয়েছে যেগুলি আমি অন্তর্ভুক্ত করি নি কারণ সেগুলি বেশ দীর্ঘ এবং সোজা:

  • HangmanGame - এখানে গেম ব্যবসার বিধিগুলি প্রয়োগ করা হয়
  • HangmanImageRenderer - সমস্ত শ্রেণি জিডিআই কদর্যকে আবদ্ধ করে এমন শ্রেণি
  • ImageResult- একটি কাস্টম ActionResultযা গতিশীলভাবে উত্পন্ন চিত্র ফিরিয়ে আনতে ব্যবহৃত হয়

সম্পূর্ণ কোড তালিকা http://pastebin.com/ccwZLknX এ উপলব্ধ


+1 বাহ, আপনি ছেলেরা দুর্দান্ত :) এখন পর্যন্ত মত মত!
মেল্লামব্যাক

দুর্দান্ত, অ্যাপরবার ডটকমের কথা কখনও শুনিনি। আপনি কি সত্যিই আপনার উত্তর হোস্ট করার জন্য অর্থ প্রদান করছেন?
মেল্লামোকব

@ মেল্লামোকব না, আমি অ্যাপারবার্বের বিনামূল্যে হোস্টিং পরিকল্পনাটি ব্যবহার করছি। এটি যদি খুব বেশি ক্লিক হয়ে যায় তবে আমার ধারণা আমি অবশ্যই দিতে হবে ... :)
ক্রিশ্চিয়ান লুপাস্কু

2
আমি প্রয়োজনে উল্লেখ করতে যাচ্ছিলাম, আমি আমার হোস্টিং সাইটে কাস্টম সাবডোমেন হোস্টিং এবং এফটিপি অ্যাক্সেস সরবরাহ করতে পারি।
মেল্লামোকব 24'12

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

19

Clojoban! [WIP]

ক্লোজুর শিখতে আমি এ থেকে একটি বড় গেমটি তৈরি করতে চেয়েছিলাম , তাই এটি টানতে কিছুটা সময় নিয়েছে (এবং বেশ বড় হয়ে উঠেছে )) এটি করতে আমি অনেক মজা পেয়েছি, বিটিডব্লিউ!

Clojoban! Restart levelNew game

। ।

- No-op*

। ।

** (গেমটি প্রতিক্রিয়াবিহীন হয়ে উঠলে এখানে ক্লিক করুন) *

নির্দেশনা

আপনি রব্বি Robby, একটি কঠোর পরিশ্রমী রোবট। আপনি FlipCo Industriesভারী বোঝা বাহক হিসাবে কাজ করেন । আপনার কাজ প্রতিটি সরানো হয় box একটি বাক্সএকটি থেকে goal একটি লক্ষ্যযতটা সম্ভব কয়েক ধাপ হিসাবে খরচ। FlipCoএর সুবিধাগুলি হ'ল বিপজ্জনক । আবিষ্কার করার জন্য প্রচুর চ্যালেঞ্জ এবং বিশেষ জায়গা রয়েছে।

আপনি যদি আটকে যান, ক্লিক করুন Restart level(তবে আপনার ধাপ গণনা পুনরায় সেট করা হবে না!)


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

ফায়ারফক্সে চিত্রটি লোড হওয়ার সময় ঝাঁকুনি দেয় না তাই এটি খেলতে কিছুটা আরামদায়ক হয়।

এই গেমটি সমাপ্তি থেকে অনেক দূরে, ক্লোজাবান এখনও একটি কাজ চলছেক্লোজবানের গিটহাব প্রকল্প পৃষ্ঠাতে আপনি সম্পূর্ণ উত্সকোডটি দেখতে পারেন । অবদান সম্পর্কে README তে কিছু তথ্য রয়েছে । আমারও লেভেল দরকার! উদাহরণ স্তরের স্তরের বিন্যাসটি দেখুন । আপনি ক্লোজবানের ইস্যু ট্র্যাকারটিতে উঁকি দিতে পারেন এবং দেখুন কি ঘটছে!


এখন আপনার খ্যাতি 11 :)
মেল্লামব্যাক

@ মেল্লামোকব ধন্যবাদ! গেমটি এখন এমবেড করা হয়েছে :)
vlvaro Cuesta

স্পষ্টতই এটি তেমন মনোযোগ পেল না। উন্নতির জন্য কোনও টিপস?
vlvaro কুয়েস্তা

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

এটা দুর্দান্ত খেলা! আমি মনে করি আপনার একক সংস্করণ করা উচিত; আমি তৃতীয় স্তরে পৌঁছেছি এবং নো-অপশন বোতাম টিপে মুক্তি পেয়েছি। :) যাইহোক, দুর্দান্ত কাজ!
ক্রিশ্চিয়ান লুপাস্কু

17

ধাঁধা

http://phpshizzle.t15.org/sogolf_maze/maze.php -
New Noop button

আমি এখানে খুঁজে পেয়েছি পিএইচপি ম্যাজ জেনারেটর থেকে শুরু: http://dev.horemag.net/2008/03/01/php-maze-generation-class/

সম্পাদনা : এসভিজির পরিবর্তে আউটপুটটিকে পিএনজিতে পরিবর্তন করা হয়েছে (আরও ভাল ক্রস ব্রাউজারের সামঞ্জস্যের জন্য)।

সম্পাদনা 2: আই কুকি সামঞ্জস্যতা ঠিক করার জন্য একটি শিরোনাম যুক্ত করেছে। এখন সমস্ত বড় ব্রাউজারে সঠিকভাবে কাজ করা উচিত।

আপনি একই দিকটি দু'বার (অ্যাঙ্কর লিঙ্কের কারণে) গ্রহণ করলে চিত্রটি রিফ্রেশ হয় না। দ্বিতীয়বার F5 টিপুন, বা আমার স্ট্যাকওভারফ্লো প্রোফাইলে গোলকধাঁধাটি খেলুন ।

সম্পাদনা 3: সহজেই একই দিক দুটি বার নিতে সক্ষম হওয়ার জন্য একটি নো-অপ্ট বোতাম যুক্ত হয়েছে (নীচে মন্তব্য দেখুন)।

<?php
// based upon the maze generator by Evgeni Vasilev (PHP Adaptation)
// see http://dev.horemag.net/2008/03/01/php-maze-generation-class/
class Maze
{
  var $maze = array();
  var $mx = 0;
  var $my = 0;
  var $xplayer = 1;
  var $yplayer = 1;

  function Maze($mx, $my)
  {
    $mx +=2;
    $my +=2;
    $this->mx = $mx;
    $this->my = $my;
    $dx = array( 0, 0, -1, 1 );
    $dy = array( -1, 1, 0, 0 );
    $todo = array(); 
    $todonum = 0;

    for ($x = 0; $x < $mx; ++$x){
      for ($y = 0; $y < $my; ++$y){
        if ($x == 0 || $x == $mx-1 || $y == 0 || $y == $my-1) {
          $this->maze[$x][$y] = 32;
        } else {
          $this->maze[$x][$y] = 63;
        }
      }
    }
    $x = rand(1, $mx-2); $y = rand(1, $my-2);
    $x = 1; $y = 1;
    $this->maze[$x][$y] &= ~48;
    for ($d = 0; $d < 4; ++$d){
      if (($this->maze[$x + $dx[$d]][$y + $dy[$d]] & 16) != 0) {
        $todo[$todonum++] = (($x + $dx[$d]) << 16) | ($y + $dy[$d]);
        $this->maze[$x + $dx[$d]][$y + $dy[$d]] &= ~16;
      }
    }

    while ($todonum > 0) {
      $n = rand(0, $todonum-1);
      $x = $todo[$n] >> 16;
      $y = $todo[$n] & 65535;
      $todo[$n] = $todo[--$todonum];
      do {
        $d = rand(0, 3);
      } while (($this->maze[$x + $dx[$d]][$y + $dy[$d]] & 32) != 0);
      $this->maze[$x][$y] &= ~((1 << $d) | 32);
      $this->maze[$x + $dx[$d]][$y + $dy[$d]] &= ~(1 << ($d ^ 1));
      for ($d = 0; $d < 4; ++$d){
        if (($this->maze[$x + $dx[$d]][$y + $dy[$d]] & 16) != 0) {
          $todo[$todonum++] = (($x + $dx[$d]) << 16) | ($y + $dy[$d]);
          $this->maze[$x + $dx[$d]][$y + $dy[$d]] &= ~16;
        }
      }
    }
    $this->maze[1][1] &= ~1;
    $this->maze[$mx-2][$my-2] &= ~2;
  }

  function _drawLine($img,$color, $x1, $y1, $x2, $y2)
  {
    imageline($img, $x1, $y1, $x2, $y2, $color);
  }

  function _drawPlayer($img, $x, $y, $r, $colorborder, $colorfill)
  {
    imagefilledellipse($img, $x, $y, $r, $r, $colorfill);
    imageellipse($img, $x, $y, $r, $r, $colorborder);
  }

  function _drawWin($img, $color)
  {
    imagestring($img, 5, 170, 90, "YOU WIN!", $color);
  }

  function movePlayerDown()
  {
    if ($this->yplayer+1 < $this->my-1 && ($this->maze[$this->xplayer][$this->yplayer] & 2) == 0)
    $this->yplayer++;
  }

  function movePlayerUp()
  {
    if ($this->yplayer-1 > 0 && ($this->maze[$this->xplayer][$this->yplayer] & 1) == 0)
      $this->yplayer--;
  }

  function movePlayerRight()
  {
    if ($this->xplayer+1 < $this->mx-1 && ($this->maze[$this->xplayer][$this->yplayer] & 8) == 0)
      $this->xplayer++;
  }  

  function movePlayerLeft()
  {
    if ($this->xplayer-1 > 0 && ($this->maze[$this->xplayer][$this->yplayer] & 4) == 0)
      $this->xplayer--;
  }  

  function renderImage($xs, $ys)
  {
    $off = 0;
    $w = ($this->mx*$xs)+($off*2); $h = ($this->my*$ys)+($off*2);
    $img = imagecreatetruecolor($w, $h);
    imagesetthickness($img, 2);
    $fg = imagecolorallocate($img, 0, 0, 0);
    $bg = imagecolorallocate($img, 248, 248, 248);
    $red = imagecolorallocate($img, 255, 0, 0);
    imagefill($img, 0, 0, $bg);
    if (($this->xplayer == $this->mx-2) && ($this->yplayer == $this->my-2)) {
      $this->_drawWin($img, $red);
      return $img;
    }

    for ($y = 1; $y < $this->my-1; ++$y) {
      for ($x = 1; $x < $this->mx-1; ++$x){
        if (($this->maze[$x][$y] & 1) != 0)
          $this->_drawLine ($img, $fg, $x * $xs + $off, $y * $ys + $off, $x * $xs + $xs + $off, $y * $ys + $off);
        if (($this->maze[$x][$y] & 2) != 0)
          $this->_drawLine ($img, $fg, $x * $xs + $off, $y * $ys + $ys + $off, $x * $xs + $xs + $off, $y * $ys + $ys + $off);
        if (($this->maze[$x][$y] & 4) != 0)
          $this->_drawLine ($img, $fg, $x * $xs + $off, $y * $ys + $off, $x * $xs + $off, $y * $ys + $ys + $off);
        if (($this->maze[$x][$y] & 8) != 0)
          $this->_drawLine ($img, $fg, $x * $xs + $xs + $off, $y * $ys + $off, $x * $xs + $xs + $off, $y * $ys + $ys + $off);
        if ($x == $this->xplayer && $y == $this->yplayer) {
          $this->_drawPlayer ($img, $x * $xs + ($xs/2), $y * $ys + ($ys/2), 14, $fg, $red);
        }
      }
    }
    return $img;
  }
}
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
session_start();
$orig_url = $_SERVER['HTTP_REFERER'];
if (!isset($_SESSION['maze']) || strpos($orig_url, 'resetmaze')){
    $_SESSION['maze'] = new Maze(25,10);
}
$maze = $_SESSION['maze'];
if (strpos($orig_url, 'playerdown')) { $maze->movePlayerDown(); }
if (strpos($orig_url, 'playerup')) { $maze->movePlayerUp(); }
if (strpos($orig_url, 'playerright')) { $maze->movePlayerRight(); }
if (strpos($orig_url, 'playerleft')) { $maze->movePlayerLeft(); }
$img = $maze->renderImage(16,16);
header("Content-Type: image/png");
imagepng($img);
imagedestroy($img);
?>

1
+1 ভাল! আরও ভাল অভিজ্ঞতার #answer-6171জন্য আপনার লিঙ্কগুলির শেষে যুক্ত করুন। অন্যথায়, ধাঁধাটি সমাধান করার মতো কারও যথেষ্ট ধৈর্য থাকবে না।
ক্রিশ্চিয়ান লুপাস্কু

@ ডাব্লু0এলএফ: ধন্যবাদ #লিঙ্কগুলি অন্তর্ভুক্ত করার বিষয়ে আমি ভেবেছিলাম তবে সমস্যাটি হ'ল আপনি যখন একই هدايتে দু'বার একই পদক্ষেপ নেন তখন তারা পৃষ্ঠাটি রিফ্রেশ করে না (যা কোনও গোলকধাঁধায় ঘটতে পারে ;-))। আমি এগুলি এখনই যুক্ত করেছি যাতে লোকেরা দ্বিতীয়বার একই দিকনির্দেশনা নিতে চাইলে F5 চাপতে হবে। অন্য বিকল্পটি এটি এখানে খেলতে হবে (আমার এসও প্রোফাইল: stackoverflow.com/users/81179/chistophed )
ক্রিস্টোফিড

আমি একই দিকে দু'বার সরানোর চেষ্টা করার সময় আপডেটটি সহজ করার জন্য একটি সাধারণ অপারেশন লিঙ্ক (রিফ্রেশ?)
কল্পনা করব

@ কেওডি: অ্যাঙ্কর পার্টস ( #) ছাড়াই যা প্রশ্নের সঠিক উত্তরে চলে যায় (অভ্যন্তরীণভাবে, পৃষ্ঠা রিফ্রেশ ছাড়াই), একটি সরল পৃষ্ঠা রিফ্রেশ ঠিকঠাক কাজ করবে (আপনি আমার লিঙ্কযুক্ত প্রোফাইলে দেখতে পাবেন যেখানে একই ধাঁধাটি পাওয়া যায়) । তবে সমস্যাটি হ'ল আপনি প্রতিটি রিফ্রেশের পরে নিজেকে পৃষ্ঠার শীর্ষে খুঁজে পাবেন। আসল সমস্যাটি হ'ল আমরা এখানে স্ট্যাকওভারফ্লো (উত্তম কারণের জন্য) উত্তরের কোনও উত্তর অন্তর্ভুক্ত করতে পারি তার মধ্যে আমরা সীমাবদ্ধ রয়েছি, উদাহরণস্বরূপ আমরা স্বেচ্ছাসেবামূলক জাভাস্ক্রিপ্ট ব্যবহার করতে পারি না। সহজ উপায় সম্পর্কে আমার কোনও ধারণা নেই।
ক্রিস্টোফিড

আপনার এখনও অ্যাঙ্কর থাকতে পারে এবং এটি সরাসরি আপনার পোস্টে যাবে তবে একটি ভিন্ন ইউআরএল (যা সঠিক গেমপ্লে সঠিক করার অনুমতি দেবে with) এর সাথে আমি এফ 5 পদ্ধতিটি বিশৃঙ্খলা খুঁজে পাই।
KaoD

14

2-প্লেয়ার পোকেমন দাবা [কাজ চলছে]

কারণ এটি এইভাবে আরও মজাদার। কিছু দিন আসছে: এআই, আইসোমেট্রিক গ্রিড এবং ছায়া!

http://minite.ch/chess/?i=1 http://minite.ch/chess/?i=2 http://minite.ch/chess/?i=3 http://minite.ch/ দাবা /? i = 4 http://minite.ch/chess/?i=5 http://minite.ch/chess/?i=6 http://minite.ch/chess/?i=7 http: //minite.ch/chess/?i=8 
http://minite.ch/chess/?i=9 http://minite.ch/chess/?i=10 http://minite.ch/chess/ ? i = 11 http://minite.ch/chess/?i=12 http://minite.ch/chess/?i=13 http://minite.ch/chess/?i=14 http: // minite.ch/chess/?i=15 http://minite.ch/chess/?i=16 
http://minite.ch/chess/?i=17 http://minite.ch/chess/?i = 18 http://minite.ch/chess/?i=19 http://minite.ch/chess/?i=20 http://minite.ch/chess/?i=21http://minite.ch/chess/?i=22 http://minite.ch/chess/?i=23 http://minite.ch/chess/?i=24 
http://minite.ch/ দাবা /? i = 25 http://minite.ch/chess/?i=26 http://minite.ch/chess/?i=27 http://minite.ch/chess/?i=28 http: //minite.ch/chess/?i=29 http://minite.ch/chess/?i=30 http://minite.ch/chess/?i=31 http://minite.ch/chess/ ? i = 32 
http://minite.ch/chess/?i=33 http://minite.ch/chess/?i=34 http://minite.ch/chess/?i=35 http: // minite.ch/chess/?i=36 http://minite.ch/chess/?i=37 http://minite.ch/chess/?i=38 http://minite.ch/chess/?i = 39 http://minite.ch/chess/?i=40 
http://minite.ch/chess/?i=41http://minite.ch/chess/?i=42 http://minite.ch/chess/?i=43 http://minite.ch/chess/?i=44 http://minite.ch/ দাবা /? i = 45 http://minite.ch/chess/?i=46 http://minite.ch/chess/?i=47 http://minite.ch/chess/?i=48 
http: //minite.ch/chess/?i=49 http://minite.ch/chess/?i=50 http://minite.ch/chess/?i=51 http://minite.ch/chess/ ? i = 52 http://minite.ch/chess/?i=53 http://minite.ch/chess/?i=54 http://minite.ch/chess/?i=55 http: // minite.ch/chess/?i=56 
http://minite.ch/chess/?i=57 http://minite.ch/chess/?i=58 http://minite.ch/chess/?i = 59 http://minite.ch/chess/?i=60 http://minite.ch/chess/?i=61http://minite.ch/chess/?i=62 http://minite.ch/chess/?i=63 http://minite.ch/chess/?i=64

কোনও উত্তীর্ণ বা কাস্টিং নেই, দুঃখিত। চেকমেট / চেক / অচলাবস্থা সনাক্তকরণ কার্যকর করা হবে। এখান থেকে স্প্রাইটস: http://floatzel.net/pokemon/black- white/ sprites/

উত্সটি এখানে:

<?php
session_start();

function kick() {
    header("Status: Forbidden\r\n", true, 403);
    header("Content-Type: text/plain\r\n");
    die('Go away.');
}

function isEnemy($item) {
    return $item !== -1 && $item & 8;
}

function iValidMoves($board, $type, $x, $y) {
    $results = array();

    switch($type) {
        case 0:
            # Pawn
            if($board[$y - 1][$x] === -1) {
                $results[] = array($x, $y - 1);

                if($y == 6 && $board[$y - 2][$x] === -1) $results[] = array($x, $y - 2);
            }

            if($x > 0 && isEnemy($board[$y - 1][$x - 1])) $results[] = array($x - 1, $y - 1);
            if($x < 7 && isEnemy($board[$y - 1][$x + 1])) $results[] = array($x + 1, $y - 1);

            break;
        case 1:
            # King
            if($x > 0 && $board[$y][$x - 1] & 8) $results[] = array($x - 1, $y);
            if($x > 0 && $y > 0 && $board[$y - 1][$x - 1] & 8) $results[] = array($x - 1, $y - 1);
            if($x > 0 && $y < 7 && $board[$y + 1][$x - 1] & 8) $results[] = array($x - 1, $y + 1);
            if($x < 7 && $board[$y][$x + 1] & 8) $results[] = array($x + 1, $y);
            if($x < 7 && $y > 0 && $board[$y - 1][$x + 1] & 8) $results[] = array($x + 1, $y - 1);
            if($x < 7 && $y < 7 && $board[$y + 1][$x + 1] & 8) $results[] = array($x + 1, $y + 1);
            if($y > 0 && $board[$y - 1][$x] & 8) $results[] = array($x, $y - 1);
            if($y < 7 && $board[$y + 1][$x] & 8) $results[] = array($x, $y + 1);

            break;
        case 2:
            # Queen
            # Downwards diagonal
            for($d = 1; $x + $d < 8 && $y + $d < 8; $d++) {
                if($board[$y + $d][$x + $d] & 8) {
                    $results[] = array($x + $d, $y + $d);

                    if($board[$y + $d][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            for($d = -1; $x + $d >= 0 && $y + $d >= 0; $d--) {
                if($board[$y + $d][$x + $d] & 8) {
                    $results[] = array($x + $d, $y + $d);

                    if($board[$y + $d][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            # Upwards diagonal
            for($d = 1; $x + $d < 8 && $y - $d >= 0; $d++) {
                if($board[$y - $d][$x + $d] & 8) {
                    $results[] = array($x + $d, $y - $d);

                    if($board[$y - $d][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            for($d = -1; $x + $d >= 0 && $y - $d < 8; $d--) {
                if($board[$y - $d][$x + $d] & 8) {
                    $results[] = array($x + $d, $y - $d);

                    if($board[$y - $d][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            # Horizontal
            for($d = 1; $x + $d < 8; $d++) {
                if($board[$y][$x + $d] & 8) {
                    $results[] = array($x + $d, $y);

                    if($board[$y][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            for($d = -1; $x + $d >= 0; $d--) {
                if($board[$y][$x + $d] & 8) {
                    $results[] = array($x + $d, $y);

                    if($board[$y][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            # Vertical
            for($d = 1; $y + $d < 8; $d++) {
                if($board[$y + $d][$x] & 8) {
                    $results[] = array($x, $y + $d);

                    if($board[$y + $d][$x] !== -1) break;
                } else {
                    break;
                }
            }

            for($d = -1; $y + $d >= 0; $d--) {
                if($board[$y + $d][$x] & 8) {
                    $results[] = array($x, $y + $d);

                    if($board[$y + $d][$x] !== -1) break;
                } else {
                    break;
                }
            }

            break;
        case 3:
            # Bishop
            # Downwards diagonal
            for($d = 1; $x + $d < 8 && $y + $d < 8; $d++) {
                if($board[$y + $d][$x + $d] & 8) {
                    $results[] = array($x + $d, $y + $d);

                    if($board[$y + $d][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            for($d = -1; $x + $d >= 0 && $y + $d >= 0; $d--) {
                if($board[$y + $d][$x + $d] & 8) {
                    $results[] = array($x + $d, $y + $d);

                    if($board[$y + $d][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            # Upwards diagonal
            for($d = 1; $x + $d < 8 && $y - $d >= 0; $d++) {
                if($board[$y - $d][$x + $d] & 8) {
                    $results[] = array($x + $d, $y - $d);

                    if($board[$y - $d][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            for($d = -1; $x + $d >= 0 && $y - $d < 8; $d--) {
                if($board[$y - $d][$x + $d] & 8) {
                    $results[] = array($x + $d, $y - $d);

                    if($board[$y - $d][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            break;
        case 4:
            # Knight
            if($x > 1 && $y > 0 && $board[$y - 1][$x - 2] & 8) $results[] = array($x - 2, $y - 1);
            if($x > 0 && $y > 1 && $board[$y - 2][$x - 1] & 8) $results[] = array($x - 1, $y - 2);
            if($x < 7 && $y > 1 && $board[$y - 2][$x + 1] & 8) $results[] = array($x + 1, $y - 2);
            if($x < 6 && $y > 0 && $board[$y - 1][$x + 2] & 8) $results[] = array($x + 2, $y - 1);
            if($x < 6 && $y < 7 && $board[$y + 1][$x + 2] & 8) $results[] = array($x + 2, $y + 1);
            if($x < 7 && $y < 6 && $board[$y + 2][$x + 1] & 8) $results[] = array($x + 1, $y + 2);
            if($x > 0 && $y < 6 && $board[$y + 2][$x - 1] & 8) $results[] = array($x - 1, $y + 2);
            if($x > 1 && $y < 7 && $board[$y + 1][$x - 2] & 8) $results[] = array($x - 2, $y + 1);

            break;
        case 5:
            # Rook
            # Horizontal
            for($d = 1; $x + $d < 8; $d++) {
                if($board[$y][$x + $d] & 8) {
                    $results[] = array($x + $d, $y);

                    if($board[$y][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            for($d = -1; $x + $d >= 0; $d--) {
                if($board[$y][$x + $d] & 8) {
                    $results[] = array($x + $d, $y);

                    if($board[$y][$x + $d] !== -1) break;
                } else {
                    break;
                }
            }

            # Vertical
            for($d = 1; $y + $d < 8; $d++) {
                if($board[$y + $d][$x] & 8) {
                    $results[] = array($x, $y + $d);

                    if($board[$y + $d][$x] !== -1) break;
                } else {
                    break;
                }
            }

            for($d = -1; $y + $d >= 0; $d--) {
                if($board[$y + $d][$x] & 8) {
                    $results[] = array($x, $y + $d);

                    if($board[$y + $d][$x] !== -1) break;
                } else {
                    break;
                }
            }

            break;
    }

    return $results;
}

function invertRelationship($piece) {
    return $piece === -1 ? -1 : $piece ^ 8;
}

function invertPosition($position) {
    return array($position[0], 7 - $position[1]);
}

function invertBoard($board) {
    $invertedBoard = array();

    for($i = 7; $i > -1; $i--) {
        $invertedBoard[] = array_map('invertRelationship', $board[$i]);
    }

    return $invertedBoard;
}

function validMoves($x, $y) {
    global $board;

    $type = $board[$y][$x];

    if($type & 8) {
        return array_map('invertPosition', iValidMoves(invertBoard($board), $type & ~8, $x, 7 - $y));
    } else {
        return iValidMoves($board, $type, $x, $y);
    }
}

function shouldHighlight($x, $y) {
    global $highlight;

    foreach($highlight as $position) {
        if($position[0] == $x && $position[1] == $y) {
            return true;
        }
    }

    return false;
}

if(isset($_SESSION['board'])) {
    $board = $_SESSION['board'];
} else {
    $board = array(
        array(5 | 8, 4 | 8, 3 | 8, 1 | 8, 2 | 8, 3 | 8, 4 | 8, 5 | 8),
        array(0 | 8, 0 | 8, 0 | 8, 0 | 8, 0 | 8, 0 | 8, 0 | 8, 0 | 8),
        array(-1, -1, -1, -1, -1, -1, -1, -1),
        array(-1, -1, -1, -1, -1, -1, -1, -1),
        array(-1, -1, -1, -1, -1, -1, -1, -1),
        array(-1, -1, -1, -1, -1, -1, -1, -1),
        array(0, 0, 0, 0, 0, 0, 0, 0),
        array(5, 4, 3, 1, 2, 3, 4, 5)
    );
}

$back = array(
    imagecreatefrompng('back/16.png'),  # pawn
    imagecreatefrompng('back/6.png'),   # king
    imagecreatefrompng('back/149.png'), # queen
    imagecreatefrompng('back/37.png'),  # bishop
    imagecreatefrompng('back/25.png'),  # knight
    imagecreatefrompng('back/75.png')   # rook
);

$front = array(
    imagecreatefrompng('front/16.png'),     # pawn
    imagecreatefrompng('front/6.png'),      # king
    imagecreatefrompng('front/149.png'),    # queen
    imagecreatefrompng('front/37.png'),     # bishop
    imagecreatefrompng('front/25.png'),     # knight
    imagecreatefrompng('front/75.png')      # rook
);

$image = $_GET['i'];

if(ctype_digit($image)) {
    $image = (int)$image;
} else {
    kick();
}

if($image < 1 || $image > 64) {
    kick();
}

$highlight = array();

$referrer = $_SERVER['HTTP_REFERER'];
$action = null;

if(strpos($referrer, '?a=') > -1) {
    $action = substr($referrer, strpos($referrer, '?a=') + 3);
}

if($action !== null && $image === 1) { # Only do this once!
    if(!ctype_digit($action)) kick();
    $action = (int)$action;

    if($action < 1 || $action > 64) kick();

    $aX = ($action - 1) % 8;
    $aY = floor(($action - 1) / 8);

    if(isset($_SESSION['selected'])) {
        if($_SESSION['selected'] !== $action) {
            # Make sure the piece can actually move there.
            # If it can, move.
            # "Highlight" the places that the piece can move:
            $highlight = validMoves(($_SESSION['selected'] - 1) % 8, floor(($_SESSION['selected'] - 1) / 8));

            if(shouldHighlight($aX, $aY)) {
                # The move is good!
                $sX = ($_SESSION['selected'] - 1) % 8;
                $sY = floor(($_SESSION['selected'] - 1) / 8);
                $board[$aY][$aX] = $board[$sY][$sX];
                $board[$sY][$sX] = -1;

                # Now, rotate the board for the next person to play:
                $invertedBoard = invertBoard($board);
                $rotatedBoard = array();

                foreach($invertedBoard as $row) {
                    for($i = 0; $i < 4; $i++) {
                        $row[$i] ^= $row[7 - $i];
                        $row[7 - $i] ^= $row[$i];
                        $row[$i] ^= $row[7 - $i];
                    }

                    $rotatedBoard[] = $row;
                }

                $board = $rotatedBoard;
            }
        }

        unset($_SESSION['selected']);
    } elseif(($board[$aY][$aX] & 8) === 0) {
        # Select a piece:
        $_SESSION['selected'] = $action;
    }
}

if(isset($_SESSION['selected'])) {
    # Highlight the places that the piece can move:
    $highlight = validMoves(($_SESSION['selected'] - 1) % 8, floor(($_SESSION['selected'] - 1) / 8));
}

# Draw the background:
$background = imagecreatetruecolor(96, 96);
$black = imagecolorallocate($background, 0, 0, 0);
$white = imagecolorallocate($background, 255, 255, 255);
$red = imagecolorallocatealpha($background, 255, 0, 0, 100);

if(($image + floor(($image - 1) / 8)) % 2) {
    imagefilledrectangle($background, 0, 0, 96, 96, $black);
} else {
    imagefilledrectangle($background, 0, 0, 96, 96, $white);
}

# Draw a piece, if there is one:
$piece = $board[floor(($image - 1) / 8)][($image - 1) % 8];

if($piece > -1) {
    if($piece & 8) {
        $piece &= ~8;
        $draw = $front[$piece];
    } else {
        $draw = $back[$piece];
    }

    imagecopy($background, $draw, 0, 0, 0, 0, 96, 96);
}

# Should we highlight this place?
if(shouldHighlight(($image - 1) % 8, floor(($image - 1) / 8))) {
    imagefilledrectangle($background, 0, 0, 96, 96, $red);
}

header("Content-Type: image/png\r\n");

imagepng($background);

$_SESSION['board'] = $board;
?>

আমি এটি ভালবাসি, তবে উভয় পক্ষের আলাদা পোকেমন হওয়া উচিত!
মিঃজান্ডার

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

1
এবং পিএইচপি-তে, পিএইচপি গেমসের জন্য +1: পি
ইভেন্ট_হরিজন

1
@ এইচএইচএইচ: না, আপনি একই পৃষ্ঠায় প্যারামিটার যুক্ত করেন এবং Refererহেডারটি পরীক্ষা করে সার্ভারে চিত্র (গুলি) তৈরি করেন ।
রাই-

5
:-(। আপনার স্প্রাইটস মারা গেছে
জাস্টিন

10

"সাইমন বলে" গেম

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

এই গেম সম্পর্কিত তথ্য, এর উত্স কোড সহ, এর গিটহাব পৃষ্ঠায় উপলভ্য । হ্যাশিশ "প্যালেট অ্যানিমেশন" থেকে উদ্ভূত গ্রাফিকাল গ্লিটগুলি (বিশেষত উইন্ডোজ কম্পিউটারগুলিতে) থাকতে পারে যা গ্রাফিক্স অঙ্কন গ্রন্থাগারের প্রয়োজন এড়ায়। ভয়ঙ্কর স্মৃতির কারণে এই গেমগুলি দ্রুত হারাতে এই অবিচ্ছিন্নতার অস্তিত্ব দরকারী অজুহাত হিসাবে কাজ করতে পারে।

অতিরিক্তভাবে, উচ্চ বিলম্বিত এবং সীমিত ব্যান্ডউইথের প্রভাবগুলিও এই গেমটিকে মূলটির চেয়ে অনেক বেশি চ্যালেঞ্জিং করে তুলতে পারে। আমি মনে করি যে পাঁচটি পয়েন্ট (যখন গেমটি প্রথম গতিবেগ করবে) এর চেয়ে বেশি পাওয়ার জন্য, আপনাকে সঠিক নির্ক্রমের উপর নির্ভর করে আগের রাউন্ডের তুলনায় কোন আলো আরও একবার জ্বলজ্বল করবে তা নির্ধারণ করতে হবে (যা খুব শক্ত) না)।

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

2018-05-24 সম্পাদনা করুন: এই সময়ে, আমি এই অ্যাপ্লিকেশনটির সর্বজনীনভাবে অ্যাক্সেসযোগ্য হেরোকু উদাহরণটি মুছে ফেলেছি। আমি পরের তারিখে অ্যাপ্লিকেশনটিকে অনলাইনে ফিরিয়ে দিতে বা নাও করতে পারি। অ্যাপ্লিকেশন এর কোড এখনও GitHub থেকে পাওয়া যায়, যাতে আপনি হয় এটিকে স্থানীয়ভাবে চালানো অথবা যদি আপনি খেলা খেলতে করতে ইচ্ছুক আপনার নিজের Heroku অ্যাপের উদাহরণ তৈরি করতে পারেন।


+1 এটি একেবারে উজ্জ্বল! কখনই গতিশীলভাবে উত্পন্ন অ্যানিমেট
জিআইএফগুলি করার কথা ভাবেননি

2

রক, পেপার, কাঁচি

সমস্ত লিঙ্ক গতির জন্য আমার প্রোফাইল পৃষ্ঠাতে যান।

খেলাাটি

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