সংক্ষিপ্ত কোডে পং


28

চ্যালেঞ্জ সহজ। পং ক্লাসিক 2-প্লেয়ার গেমটির পুনরুত্পাদন করার জন্য সবচেয়ে সংক্ষিপ্ত কোডটি প্রদান করুন http://en.wikedia.org/wiki/Pong । গ্রাফিক্স এবং কার্যকারিতাটির স্তরটি এই জাভাস্ক্রিপ্ট প্রদর্শনের যতটা সম্ভব কাছাকাছি হওয়া উচিত http://codeincomplete.com/posts/2011/5/14/javascript_pong/demo.html (তবে অতিরিক্ত বিকল্প ছাড়া আপনি বামে ক্লিক করতে পারেন) বা ফ্রেম, fps ইত্যাদি তথ্য নীচের ডানদিকে)।

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


সত্যিই, কোড গল্ফের জন্য এই প্রশ্নটি একটু বেশিই কঠিন। পংয়ের জন্য বল পদার্থবিদ্যা বেশ জটিল।
beary605

@ বেরি 605, আমার মনে হয় না বল পদার্থ বিজ্ঞান খুব জটিল। আমার সমাধান জাভাস্ক্রিপ্ট প্রদর্শনের 'যতটা সম্ভব সম্ভব' এবং পদার্থবিজ্ঞানটি বেশ সহজ quite
বুথবি

কেবল রেফারেন্সের জন্য আরও কিছু [কোড-গল্ফ] রয়েছে যা বেশ দীর্ঘস্থায়ী। একটি ধাঁধা খেলা একটি ইঞ্জিন তৈরি করুন , একপ্রকার খেলা (ওরফে শিরাসমূহের কম্পন-কম্পন Tac অঙ্গুলী) (উভয় অতিরিক্ত এন্ট্রি, যারা ডিফল্টরূপে "win" কিভাবে? লেগেছে ব্যবহার করতে পারে), একটি ছোট HTTP সার্ভার লিখুন , স্ব-দোভাষী ইন্টারপ্রেটার , স্ব সংকলন সংকলন , রেগেক্সেস সংকলন ...
dmckee

@ ফিলিপা, আপনি 'যতটা সম্ভব কাছাকাছি' আনুষ্ঠানিকতা করতে পারেন? আমি জানি না কেন আমার সেড সলিউশন নেতৃত্বাধীন নয়।
বুথবি

উত্তর:


24

জাভাস্ক্রিপ্ট, 883 (+ 70 এইচটিএমএল)

c=document.getElementById('c').getContext('2d')
c.fillStyle="#FFF"
c.font="60px monospace"
w=s=1
p=q=a=b=0
m=n=190
x=300;y=235
u=-5;v=3
setInterval(function(){if(w&&!s)return;s=0
c.clearRect(0,0,640,480)
for(i=5;i<480;i+=20)c.fillRect(318,i,4,10)
m+=p;n+=q
m=m<0?0:m;m=m>380?380:m
n=n<0?0:n;n=n>380?380:n
x+=u;y+=v
if(y<=0){y=0;v=-v}
if(y>=470){y=470;v=-v}
if(x<=40&&x>=20&&y<m+110&&y>m-10){u=-u+0.2;v+=(y-m-45)/20}
if(x<=610&&x>=590&&y<n+110&&y>n-10){u=-u-0.2;v+=(y-n-45)/20}
if(x<-10){b++;x=360;y=235;u=5;w=1}
if(x>640){a++;x=280;y=235;u=-5;w=1}
c.fillText(a+" "+b,266,60)
c.fillRect(20,m,20,100)
c.fillRect(600,n,20,100)
c.fillRect(x,y,10,10)},30)
document.onkeydown=function(e){k=(e||window.event).keyCode;w=w?0:k=='27'?1:0;p=k=='65'?5:k=='81'?-5:p;q=k=='40'?5:k=='38'?-5:q;}
document.onkeyup=function(e){k=(e||window.event).keyCode;p=k=='65'||k=='81'?0:p;q=k=='38'||k=='40'?0:q}


/* Variable index:
a -> left player score
b -> right player score
c -> context
e -> event
i -> counter for dashed line
k -> keycode
m -> left paddle y
n -> right paddle y
p -> left paddle y velocity
q -> right paddle y velocity
s -> is start of game
u -> ball x velocity
v -> ball y velocity
w -> game is waiting (paused)
x -> ball x
y -> ball y
*/

স্ক্রিপ্টটি শেষে <body>বা বলা যেতে পারে onLoad। এটির জন্য নিম্নলিখিত ক্যানভাস উপাদানটির প্রয়োজন:

<canvas id="c"width="640"height="480"style="background:#000"></canvas>

প্লেয়ার 1 টি qএবং aকীগুলি এবং প্লেয়ার 2 টি pএবং lকীগুলি ব্যবহার করে । প্রেস escবিরাম কী এবং যে কোনো একটি কি শুরু করুন / অবিরত।

আপনি এটি এখানে আপনার ব্রাউজারে খেলতে পারেন

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

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


2
এটি একটি দুর্দান্ত বাস্তবায়ন।
ফেলিপা

1
আরও কিছুটা গল্ফ করা যেতে পারে, আমি জানি আমি এখানে প্রায় দুই বছর দেরি করেছি। তবে আপনি 20নামের একটি ভেরিয়েবলকে বরাদ্দ করতে পারেন gএবং একটি ম্যাসলি বাইট সংরক্ষণ করতে পারেন।
জাকারি

অভিশাপ, এটি একটি AZERTY কীবোর্ডে খেলতে ... কঠিন
অস্পষ্ট

38

সেড, 35

ডাক-স্ট্যাম্প সেড মেডিটেশনের সাথে বারটি কিছুটা বাড়ানো।

s/> / >/
s/ </< /
s/0</0>/
s/>1/<1/

স্ট্যান্ডিন / স্টাডাউটে দুটি কম্পিউটারে ধ্যানটি উপভোগ করা হয়, এটি কোনও নেটওয়ার্কের মাধ্যমে অগত্যা সংযুক্ত নয়। রাজ্যে ধ্যান শুরু হয়

0         <       1

বামদিকে গুরু শূন্য এবং একটি ডানদিকে। কোণ বন্ধনী বাম এবং ডানে সরে যায় এবং যদি কোনও গুরু তাদের পাশের সাথে সাথে কার্সারের সাথে যোগাযোগ করতে তাদের সংখ্যা চালিত করে, তাদের স্কোর এক এক করে বৃদ্ধি পায় এবং তারা আনন্দে আনন্দিত হয়।

উপরের রাষ্ট্রটি টাইপ করে ধ্যানটি শুরু করা হয়েছিল sed -f medi.sedএবং কম্পিউটার পরবর্তী অবস্থার সাথে সাড়া দেয়। কর্তব্যপরায়ণ গুরু যে ধরণের ধ্যানকে বোঝায়, তারা পরবর্তী কীটি জোরে জোরে পড়বে, উভয় গুরু enterএকই সাথে ভবিষ্যতের পবিত্র কীটি টিপবে । কর্তব্যরত কম্পিউটার পরবর্তী রাষ্ট্রের সাথে উত্তর দেয়। সর্বশেষের মতো একসাথে টাইপ করার সময় এটি, জোরে জোরে পড়া হয়। অসীম সুখ অর্জন না করা পর্যন্ত ভবিষ্যতে অগ্রসর হওয়া চালিয়ে যান।

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


23
বাবু ... আমি কী পড়েছি?
মিঃজান্ডার

9
@ মিঃজান্ডার কেবলমাত্র ধ্যানের জ্ঞান প্রকাশ করতে পারে বিস্তৃত চিন্তার মাধ্যমে through প্রোগ্রামটি কার্যকর করার মাধ্যমে এই মননকে সর্বোত্তমভাবে সহায়তা করা হয়।
বুথবি

15

পাইথন ( পাইগাম সহ ) 650 বাইট

বৈশিষ্ট্য

  • 1 এবং 2 প্লেয়ার মোড - গেমটি শুরু হয়ে গেলে 11 জন খেলোয়াড়ের 2জন্য বা 2 খেলোয়াড়ের জন্য চাপুন । এই কীগুলির একটিতে চাপ না দেওয়া পর্যন্ত খেলা শুরু হবে না।
  • বলের গতি বাড়ানো - প্রতিটি ভলিতে, বলের গতি এমনভাবে বৃদ্ধি করা হয় যে 10 ভোলির পরে এটি প্রায় 50% বৃদ্ধি পেয়েছে, ২০ এর পরে এটি এর চেয়ে ৫০% দ্রুতগতিতে হবে etc.
  • ভেরিয়েবল বল ডিফ্লেশন - বল ডিফ্লেশন দুটি কারণের উপর ভিত্তি করে: এটি প্যাডেলের কোন অংশটি আঘাত করে এবং প্যাডেল প্রভাবের দিকে অগ্রসর হচ্ছে কিনা। বলটি যদি প্রান্তের কোনওটির কাছে প্যাডেলটি আঘাত করে তবে এটি মাঝের কাছাকাছি আঘাতের চেয়ে প্রায় দৃ strongly়রূপে বিভক্ত হবে (এটি প্রায় কোনও বাঁকানো পৃষ্ঠ)। অতিরিক্তভাবে, প্যাডেলটি গতিতে থাকলে, প্যাডেলের গতি ডিফ্লেকশনটিতে যুক্ত হয়। শক্তিশালী পরাভূততা পেতে, বল অবশ্যই প্যাডেলের শেষের কাছাকাছি গিয়ে আঘাত করবে এবং প্যাডেলটি অবশ্যই একই প্রান্তের দিকে চলবে। এটি আটারি 2600 এর মূল পংয়ের সাথে খুব মিল।
  • বিরতি দিন - Spaceবার টিপে গেমটি যে কোনও সময় বিরতি দেওয়া হতে পারে । স্পেস বারটি দ্বিতীয়বার টিপানোর পরে প্লেটি আবার শুরু হবে।
  • নিয়ন্ত্রণগুলি - উদাহরণস্বরূপ, প্লেয়ার 1 টি কী Qএবং Aকী দিয়ে চালিত হয় এবং প্লেয়ার 2 Pএবং এর সাথে চালিত হয় L

একটি চূড়ান্ত নোট হিসাবে, আমি অনুরোধ করতে চাই যে এই সমাধানটি বিভিন্ন কারণে গ্রহণযোগ্য উত্তর হিসাবে বেছে নেওয়া হবে না।

from pygame import*
init();d=display;s=d.set_mode((640,480))
g=p=16;j=q=80;x=y=200;o=t=h=v=1;z=m=n=0;w=[255]*3
while s.fill(time.wait(3)):
 event.get();k=key.get_pressed();t^=o*k[32];o=1-k[32];z=z or-k[49]-k[50]*2;e=k[113]-k[97];f=[k[112]-k[108],(h>0)*cmp(y,q-32)][z];a=p<g;b=q-[y,x][a]
 if p%608<g:m,n,p,h,v=[m+1-a,m,n+a,n,g+a*592,p,1-a*2,h/-.96,1,b/32.+~[f,e][a]][-g<b<j::2]
 for r in[(0,x,g,j),(624,y,g,j),(p,q,g,g)]+[(316,i*31,8,15)for i in range(g)]:draw.rect(s,w,r)
 if z*t:v*=(0<q<464)*2-1;x-=(0<x-e<400)*e/.6;y-=(0<y-f<400)*f/.6;p+=h;q+=v
 c=font.SysFont('monospace',j,1).render('%3d %%-3d'%m%n,1,w);s.blit(c,(320-c.get_width()/2,0));d.flip()

নমুনা পর্দা ক্যাপচার:

দ্রষ্টব্য: স্কোরের জন্য ব্যবহৃত ফন্টটি সিস্টেম থেকে অন্য সিস্টেমে পরিবর্তিত হতে পারে।


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

@ অ্যাডিটসু আপনি কি লিনাক্সের আওতায় কাজ করছেন? নির্বাচিত ফন্টের মুখ নির্বিশেষে আমি কোনও বিকল্পের সন্ধান করতে সক্ষম হবো তা আমি দেখতে পাচ্ছি। বিভ্রান্তির পেছনের ধারণাটি হ'ল প্যাডেলটি ( 1.67 ) চালুর চেয়ে দ্রুত গতিতে ( আমার স্কেলের সর্বোচ্চ 2.5 ) গিলে ফেলা সম্ভব হবে । এটি কেবল তখনই সম্ভব যদি আপনি এটিকে কিছু 'স্পিন' দেন। বলটি আঘাত করলে প্যাডেলটি চলমান না থাকলে সর্বাধিক বেগ হবে 1.5
প্রিমো

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

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

হ্যাঁ এটি এখন কেন্দ্রিক
অদিতসু

8

এইচটিএমএল এবং জাভাস্ক্রিপ্ট (2 নিন) - 525

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

<canvas id=c><script>C=c.getContext('2d');f=C.fillRect.bind(C)
S=[-1,I=J=0];A=B=210;X=Y=1
function g(n){++S[n];N=Math.random(M=n*613+9)*471}D=document
D.onkeydown=D.onkeyup=function(e){d=!!e.type[5];k=e.keyCode
k&1?I=k&16?d:-d:J=k&4?-d:d}
g(0);setInterval(function(){A-=A<I|A>420+I?0:I
B-=B<J|B>420+J?0:J
M+=X;N+=Y
N<0|N>471?Y=-Y:0
M==622&N>B&N<B+51|M==9&N>A&N<A+51?X=-X:M>630?g(0):M||g(1)
f(0,0,c.width=640,c.height=480)
C.fillStyle='tan';C.font='4em x';C.fillText(S,280,60)
f(0,A,9,60);f(631,B,9,60);f(M,N,9,9)},6)</script>

ধন্যবাদ শ্মিদ্দী


আপত্তি বুঝতে পারছি না। আমি যতদূর মনে করতে পারি, 715 বাইট সংস্করণ (এই পোস্টের 3 ঘন্টা পূর্বে সম্পাদিত) আমার আটারি 2600 এর জন্য পংয়ের মূল সংস্করণটির সাথে প্রায় একই রকম
প্রিমো

@ প্রিমো আমি ধরে নিচ্ছি যে আপনি আমার বোঝানো দাবির বিষয়ে কথা বলছেন যে আপনার সমাধান "যতটা সম্ভব কাছাকাছি" মানদণ্ডটি পূরণ করে না। ঠিক আছে, ওপি আটারি 2600 সংস্করণটির উল্লেখ করেনি, তবে একটি নির্দিষ্ট জাভাস্ক্রিপ্ট বাস্তবায়ন যার সাথে তিনি যুক্ত ছিলেন। এবং প্রথম দর্শনে আপনার কোডে 2 সুস্পষ্ট পার্থক্য রয়েছে: কোনও কম্পিউটার প্লেয়ার এবং কোনও "7-বিভাগ" স্কোর প্রদর্শন নেই। "মেকানিক্স" এর মধ্যে সম্ভবত আরও অনেক পার্থক্য রয়েছে। যদি এই বিষয়গুলি গুরুত্বপূর্ণ না হয় তবে আমি মনে করি এই সমাধানটিও বৈধ হওয়া উচিত।
অদিতসু

এটা আমার ভুল। আমি সত্যিই "যতটা সম্ভব কাছাকাছি" বলতে চাইছিলাম তাই এখন পর্যন্ত আপনার প্রথম সমাধানটি সেরা।
ফেলিপা

আপনি মুছে ফেলতে পারেন c=window.c। আপনি নিজেকে একটি গ্লোবাল ভেরিয়েবল নিযুক্ত করছেন।
শ্মিদ্দী

আপনি চলন্ত দ্বারা 1 টি চরিত্র সংরক্ষণ করতে পারবেন ++S[n]ভেতরে.random(++S[n])
Shmiddty

5

এইচটিএমএল এবং জাভাস্ক্রিপ্ট - 1663

আমার আরও ভাল রায় দেওয়ার বিরুদ্ধে, আমি ডেমো থেকে আসল কোডটি গল্ফ করার পাগল পদ্ধতি গ্রহণ করেছি। আমি কিছু বৈশিষ্ট্য এবং ইন্টারফেস উপাদানগুলি সরিয়েছি, তবে সাধারণত এটি ঠিক একইভাবে কাজ করে - 0, 1 বা 2 মানব খেলোয়াড়ের সংখ্যা চয়ন করতে, প্রশ্ন / এ এবং পি / এল স্থানান্তরিত করতে।

যদি আমি কিছু ভুল না করি তবে গেমপ্লেটি অভিন্ন হওয়া উচিত, পিক্সেলের জন্য পিক্সেল এবং মিলিসেকেন্ডের জন্য মিলিসেকেন্ডটি, মূলটিতে 640 * 480 এ (ইঙ্গিত: ব্রাউজার উইন্ডোটির আকার পরিবর্তন করে ডেমোতে গেমের আকার পরিবর্তন করে)। এটি কেবল নির্দেশ দেয় না, বিজয়ী ঘোষণা করে না এবং এসকে পরিচালনা করে না।

কোডটি পুরোপুরি স্ব-অন্তর্ভুক্ত এবং আমি লিনাক্সের ক্রোমিয়াম 25 এ এটি পরীক্ষা করেছি tested ফায়ারফক্স খুব একটা পছন্দ করে না।

<body bgcolor=0><canvas id=c height=480><script>R=Math.random
C=c.getContext('2d');f=C.fillRect.bind(C)
S=[l=G=I=J=K=L=0,0];r=17;u=463;o=24;q=12;z=10;s=640;v=36
function T(z,t,u,v){P=0;if(e=v*E-u*F){a=(u*t-v*z)/e;b=(E*t-F*z)/e
a<0|a>1|b<0|b>1?0:P={x:M+a*E,y:N+a*F,d:u,s:0,X:X,Y:Y}}}function
i(p,q,h){T(p-22*(E<0),q,0,h)
P?0:T(p,q-h*(F<0),22,0)}function
U(p){if(p.a)if(M<p.x&X<0|M>p.x+q&X>0)p.u=0
else{P=p.P;if(P&&P.X*X>0&P.Y*Y>0&P.s<p.l/z)P.s+=t
else{E=X*z;F=Y*z;i(M-p.x+5,s*q,s*o)
if(p.P=P){y=P.y;while(y<r|y>u)y=y<r?34-y:y>u?u+u-y:y
P.y=y+R(e=(p.l+2)*(X<0?M-p.x-q:p.x-M)/64)*2*e-e}}P?p.u=P.y<p.y+25?1:P.y>p.y+35?-1:0:0}y=p.y-p.u*t*198
p.y=y<q?q:y>408?408:y}function
W(n,x){a=9.6;b=[~8,3,62,31,75,93,~2,7,-1,u][n]
b&4&&f(x,o,v,a);b&64&&f(x,o,a,o)
b&2&&f(x+v,o,-a,o);b&8&&f(x,43.2,v,a)
b&32&&f(x,48,a,o);b&1&&f(x+v,48,-a,o)
b&16&&f(x,72,v,-a)}A={u:0,x:0,y:210};B={u:0,x:628,y:210}
function g(n){if(++S[n]>8)G=A.a=B.a=0
else{N=R(M=n?635:5)*446+r;Y=157.5;X=n?-Y:Y
A.l=z+S[0]-S[1];B.l=20-A.l}}D=document
D.onkeydown=D.onkeyup=function(e){d=!!e.type[5]
k=e.keyCode-45;if(k>2&k<6&d&!G){G=S=[-1,0];A.a=k<4;B.a=k<5
g(0)}k^31?k^35?k^20?k^v?0:I=d:J=d:K=d:L=d
A.a?0:A.u=I-J;B.a?0:B.u=K-L}
setInterval(function(){t=new Date()/1000-l;l+=t;U(A);U(B)
if(G){E=t*X+4*t*t;F=t*Y+4*t*t
x=M+E;y=N+F;m=X+t*(X>0?8:-8);n=Y+t*(Y>0?8:-8)
if(n>0&y>u){y=u;n=-n}if(n<0&y<r){y=r;n=-n}p=m<0?A:B
i(M-p.x+5,N-p.y+5,70)
if(P){if(P.d){y=P.y;n=-n}else{x=P.x;m=-m}n*=n*p.u<0?.5:p.u?1.5:1}M=x;N=y
X=m;Y=n;M>645?g(0):M<-5&&g(1)}c.width=s;C.fillStyle='#fff'
f(0,0,s,q);f(0,468,s,q);for(j=o;j--;)f(314,6+o*j,q,q)
W(S[0],266.5);W(S[1],338.5)
f(0,A.y,q,60);f(s,B.y,-q,60);G&&f(M-5,N-5,z,z)},50/3)</script>

উন্নতির জন্য শ্মিদ্দীকে কিছু ক্রেডিট


4

প্রসেসিং, 487 অক্ষর

int a=320,b=240,c=2,d=2,e=0,f=0,g=0,h=0,i=15,j=80,k=640,
l=160,m;void setup(){size(k,b*2);}void draw(){background
(0);if(keyPressed){if(key=='q'&&g>0)g-=i;if(key=='a'&&g<
j*5)g+=i;if(key=='o'&&h>0)h-=i;if(key=='l'&&h<j*5)h+=i;}
rect(0,g,i,j);for(m=0;m<k;m+=30)rect(312,m,i,i);rect(a,b
,i,i);rect(625,h,i,j);a+=c;b+=d;c*=a<i&&(b>g&&b+i<g+j)||
a>610&&(b>h&&b+i<h+j)?-1:1;d*=b<0||b>=465?-1:1;if(a<0){f
++;a=0;b=240;c=2;}if(a>k){e++;a=625;b=240;c=-2;}textSize
(j);text(e,l,j);text(f,3*l,j);}

নমুনার স্ক্রিনশট:

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

এই কোডটি ছোট ছোট মনে রেখে তৈরি করা হয়েছিল, তাই এটি বেশ বগিযুক্ত (বলটি মাঝে মধ্যে প্যাডেল দিয়ে যায় বা তার চারপাশে মোড়ানো হয়)। নিয়ন্ত্রণগুলি প্লেয়ার 1 এর জন্য Q / A এবং প্লেয়ার 2 এর জন্য ও / এল।


1
একটি গেম হিসাবে আপনার পং সংস্করণটিও একেবারেই অন্যায্য বলে মনে হচ্ছে, ফ্রেমে প্রতি কেবল একজন খেলোয়াড়ের চাবি নিবন্ধিত রয়েছে: পি
জোনাথন ফ্রেচ

2

সি # - 1283 টি অক্ষর

এটি বেশ খানিকটা গল্ফ করা যেতে পারে তবে এটি এখানে।

using System;using System.Drawing;using System.Runtime.InteropServices;using System.Windows.Forms;using r=System.Drawing.RectangleF;namespace f{public partial class f:Form{public f(){InitializeComponent();}private void f_Load(object sender,EventArgs e){var t=this;var s=new r(0,0,300,300);var q=new r(0,0,15,50);var o=new r(0,0,15,50);var x=new PointF(150,150);var v=.06F;var h=v;var b=new r(x.X,x.Y,15,15);var p1=0;var p2=0;var p=new PictureBox{Size=t.Size,Location=new Point(0,0)};t.Controls.Add(p);p.Paint+=(wh,n)=>{var g=n.Graphics;Action<Brush,r>f=g.FillRectangle;var k=new SolidBrush(Color.Black);var w=new SolidBrush(Color.White);var d=new byte[256];GetKeyboardState(d);var l=q.Location;var _1=.1F;q.Location=new PointF(0,d[90]>1?l.Y+_1:d[81]>1?l.Y-_1:l.Y);l=o.Location;o.Location=new PointF(269,d[77]>1?l.Y+_1:d[79]>1?l.Y-_1:l.Y);f(k,s);f(w,q);f(w,o);Func<r,bool>i=b.IntersectsWith;h=i(q)||i(o)?-h:h;v=b.Top<1||b.Bottom>t.Height-30?-v:v;b.Offset(h,v);if(b.Left<0){p2++;b.Location=x;}if(b.Right>290){p1++;b.Location=x;}f(w,b);for(int j=0;j<19;)f(w,new r(140,(j+(j++%2))*15,10,10));var a=new Font("Arial",20);g.DrawString(p1.ToString(),a,w,100,12);g.DrawString(p2.ToString(),a,w,170,12);p.Invalidate();};}[DllImport("user32.dll")]static extern bool GetKeyboardState(byte[]s);}}

সম্পাদনা: একটি নিখরচায়, লিনাক্স-চালিত ভাষার জন্য প্রয়োজনীয়তাটি দেখেনি ...


2

টিসিএল / টাকা , 932 বাইট

ইন্টারেক্টিভ শেল চালানো আবশ্যক

gri [can .c -w 1024 -he 768 -bg #000]
proc A {} {set ::v [expr (int(rand()*36)+1)*20]}
proc R {C t\ X} {.c cr r $C -f #aaa -t $t}
proc I {} {incr ::v 20}
time {R "504 [I] 520 [I]"} 18
R "0 0 1024 20"
R "0 748 1024 768"
R "0 340 20 440" b
R "1004 340 1024 440" B
R "40 [A] 60 [I]" P
lmap n 4\ 5 T F\ S {.c cr t ${n}62 60 -ta $T -te 0 -fi #aaa -font {"" 56}}
proc C t\ n {lindex [.c coo $t] $n}
lmap {a b c d e} {q b 1 >20 -20 a b 3 <740 20 p B 1 >20 -20 l B 3 <740 20} {bind . $a "if \[C $b $c]$d {.c move $b 0 $e}"}
lassign {0 0 20 20} F S y x
proc M {} {lmap {_ a b c d e f} {0 <40 b 20 S 960 980 2 >984 B -20 F 80 100} {if [C P $_]$a {if [C P 1]>=[C $b 1]&&[C P 3]<=[C $b 3] {bell
set ::x $c} {.c itemco $d -te [incr ::$d]
if \$::$d>8 {tk_messageBox -message WINNER!
lmap T F\ S {.c itemco $T -te [set ::$T 0]}}
.c coo P $e [A] $f [I]}}}
.c move P $::x [set ::y [expr [C P 1]<40?20:[C P 3]>727?-20:$::y]]
after 99 M}
M
focus -f .

বিঃদ্রঃ:

 #There is an Enter at the end

পংয়ের একটি খুব সংক্ষিপ্ত সংস্করণ, যেখানে বলটি কেবল তির্যক কোণগুলিতে চলে এবং সর্বদা একই গতিবেগ থাকে।

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


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