-
انجمن بازی نویسان
سلام به همه برنامه نویسای عزیز! :biggrin:
از این به بعد در این پست می خوایم بازی هایی که خودمون نوشتیم رو قرار بدیم؛ بازی هایی هر چند ساده و مبتدی (ولی با ارزش) که هر کدوم هم واسه سازنده اش و هم واسه بقیه اعضا، خیلی خیلی محترمه.
شما دوست عزیزی که می خوای بازی ساخت خودت رو تو این پست قرار بدی، بدون که:
1) بازی هایی که تو می سازی ممکنه خیلی ساده و یا به نظر خودت حتی خیلی احمقانه باشن، ولی به نظر من هر بازی به هر شکلی که هست یه گوشه ناچیزی از تواناییهای سازنده اش رو نشون می ده و برای من و سایر اعضا خیلی با ارزشه.
2) اگه می خوای شروع کنی به بازی نویسی حتما لازم نیست یه چیزی مثل GTA بسازی، می تونی از بازی های خیلی ساده ای مثل "گل یا پوچ" شروع کنی. بهر حال بیل گیتس هم یه روزی برنامه نویسی بلد نبود!
3) می تونی مشکل خودت رو تو ساخت بازی با بقیه اعضا مطرح کنی و مطمئن باش که یه روزی هم بقیه سوالشون رو از تو می پرسن.
4) اگه می خوای به کسی تو ساخت بازی کمک کنی، لطفا از اون چیزی که می دونی دریغ نکن! حتی اگه شده یه تیکه کد رو براش بنویسی این کار رو انجام بده و مطمئن باش که تو همه چیز رو نمی دونی!
5) شاید به نظر بعضی ها این اتلاف وقت باشه که یه عده بشینن و شروع کنن به ساخت بازی های مبتدی! ولی خب بهرحال باید از یه جایی شروع کرد. در ضمن برنامه نویسی که فقط نوشتن بانک اطلاعاتی و ... نیست!
6) اگه بازی ساخت خودت رو تو این پست بذاری مطمئن باش که ضرر نکردی چون:
الف) فرومی که توش هستی بازدیدکننده های زیادی داره. همینطور که تو اومدی، بقیه هم میان. پس لااقل این خوبی رو داره که بازی ات (اگه قابلیتش رو داشته باشه) خیلی زود معروف شه!
ب) کسانی هستن که بعد از دیدن بازی ات راجع به اون نظر بدن. این نظرات مطمئنا به دردت می خوره.
ج) بعد یه مدت اگه سطح پایین تری از اعضای این انجمن داشته باشی یا قیدش رو میزنی، یا اینکه سعی می کنی خودت رو به بقیه برسونی. مسلمه که اگه راه دوم رو انتخاب کنی، بعد از یه مدت عضوی از یک گروه بازی نویسی ماهر میشی!
نکاتی که تو ساخت بازی بهتره بهش توجه کنی:
1) لطفا سورس کد بازی رو در این پست قرار نده. اول اون رو Compile کن بعد EXE شدش رو (در نهایت فشردگی) واسه ما بذار (که یه وقت زبونم لال کسی با کارهای تو معروف نشه).
2) قبل از قرار دادن فایل EXE توجه کن که ویروس (و امثالهم!) بهش نچسبیده باشن.
3) حتما توی برنامه ات یه نشونی از خودت بذار. مثلا همین Username تو P30WORLD که برای ما هم آشناتره و هم مطمئن تر!
4) بازی که می نویسی حتما نباید 32 بیتی و تحت ویندوز باشه. می تونی اگه بازی خوبی تو محیط داس مثل Qbasic, Pascal, C++ ,Assembly و... نوشتی، تو پست قرار بدی.
5) سعی کن حجم کار (این اوایل) خیلی زیاد نباشه (ترجیحا زیر 500 کیلوبایت) و اینکه همراه بازی یه توضیحاتی رو هم راجع به نحوه اجرا و... واسه بقیه تو پست بنویسی.
6) اگه بازی رو تو زبانی مثل VB نوشتی و از Component ها استفاده کردی (یا مثلا با دات نت نوشتی و FrameWork می خواد) حتما توضیح بده و اگه فایل مورد نیاز حجم کمی داره، اون رو هم ضمیمه فایل EXE کن. اصلا می تونی واسه اش Setup بسازی یا هر کاری که دلت خواست!
7) سعی نکن با کارهای کس دیگه ای کلاس بذاری! چون خواهی نخواهی بعد یه مدت همه می فهمن.
8) یه چیزی هست که کارت رو (در نهایت سادگی) خیلی با ارزش می کنه: نوآوری و خلاقیت!
خب مثل اینکه زیادی حرف زدم!
به امید همکاری شما... :)
-
كمك در Game programming
دوستان من تا كنون بازي هاي زيادي رو نوشتم فعلا در حد توضيح مي تونم بهتون كمك كنم تا چند وقت ديگه همه بازي هامو پك مي كنم و براتون مي ذارم :
نمونه بازي هايي كه نوشتم :
j2se :
شبيه سازي Age of empires
tetris
snake
battle ship
minesweeper
بازي چتر بازها
j2me :
tetris
snake
و ... كه نمونه بعضي از اين ها رو با پاسكال و وي بي هم دارم .
-
با سلام من مدت زيادي(در حدود 3 سال) پيگير نوشتن بازي 3 بعدي بوده ام و ِdirectx رو هم زيرو رو كردم يه دمو هم تهيه كردم. ولي كار game با يك تفر و دو نفر نميشه. مشكل اصلي من هم يك طرااح 3 بعدي خوب و يك ايده و داستان هست.
اگر شد دمو رو هم ميذارم روي سايتم. به نظر من نوشتن بازي ممكن هست ولي گروه خوب نياز داره.
(چند تا بازي دو بعدي هم دارم كه اگه شد اونا رو هم upload مي كنم )
-
snake.pas
جون هرکی که دوست داری دستور نوشتن snake توسط پاسکال رو به من بده
-
man kheili paye i kar mikonam bazi ba basic minevisam age kesi in hame payas mitoone codo dashte bashe
albate hamchinam bedone zahmat nabood
INPUT "NUMBERS"; N
Screen 9
Cls
z = 0.3
drift = 25
i = 1
dt = 0.01
l = 10
blocks = 40
t1 = Timer
gas = 0.1
Dim x(N, 510)
Dim y(N, 510)
Dim m(100, 100)
x(1, 0) = 100
y(1, 0) = 100
For i = 3 To N
x(i, 0) = (i - 2) * 50
y(i, 0) = (i - 2) * 50
Next
ASA$(1) = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X"
ASA$(2) = "X XX X"
ASA$(3) = "X XX X"
ASA$(4) = "X XX X X X X X"
ASA$(5) = "X XX X X X"
ASA$(6) = "X XX X X X"
ASA$(7) = "X XX X X X"
ASA$(8) = "X XX X X XX X X"
ASA$(9) = "X XX X X X X"
ASA$(10) = "X XX X X X"
ASB$(1) = "X X X X X X"
ASB$(2) = "X X XXXX X X X"
ASB$(3) = "X X X X X X"
ASB$(4) = "X XX X X X"
ASB$(5) = "X X X X X"
ASB$(6) = "X X X X X X"
ASB$(7) = "X X XX X X X"
ASB$(8) = "X X X X X X"
ASB$(9) = "X XX X X X X"
ASB$(10) = "X X X X X X"
Asc$(1) = "X X X X X X"
Asc$(2) = "X X X X X"
Asc$(3) = "XX X X X X"
Asc$(4) = "X X X X X X"
Asc$(5) = "X X X X X X"
Asc$(6) = "X XXXXXXX X X X"
Asc$(7) = "X X X X X"
Asc$(8) = "X X X X X"
Asc$(9) = "X X XXXX X X"
Asc$(10) = "X X X X"
ASD$(1) = "X X X X"
ASD$(2) = "X X X X"
ASD$(3) = "X XXXXXXXX X"
ASD$(4) = "X X"
ASD$(5) = "X X"
ASD$(6) = "X X"
ASD$(7) = "X X"
ASD$(8) = "X X"
ASD$(9) = "X X"
ASD$(10) = "X X"
ASE$(1) = "X X"
ASE$(2) = "X X"
ASE$(3) = "X X"
ASE$(4) = "X X"
ASE$(5) = "X X"
ASE$(6) = "X X"
ASE$(7) = "X X"
ASE$(8) = "X X"
ASE$(9) = "X X"
ASE$(10) = "X X"
ASF$(1) = "X X"
ASF$(2) = "X X"
ASF$(3) = "X X"
ASF$(4) = "X X"
ASF$(5) = "X X"
ASF$(6) = "X X"
ASF$(7) = "X X"
ASF$(8) = "X X"
ASF$(9) = "X X"
ASF$(10) = "X X"
ASG$(1) = "X X"
ASG$(2) = "X X"
ASG$(3) = "X X"
ASG$(4) = "X X"
ASG$(5) = "X X"
ASG$(6) = "X X"
ASG$(7) = "X X"
ASG$(8) = "X X"
ASG$(9) = "X X"
ASG$(10) = "X X"
ASH$(1) = "X X"
ASH$(2) = "X X"
ASH$(3) = "X X"
ASH$(4) = "X X"
ASH$(5) = "X X"
ASH$(6) = "X X"
ASH$(7) = "X X"
ASH$(8) = "X X"
ASH$(9) = "X X"
ASH$(10) = "X X"
ASI$(1) = "X X"
ASI$(2) = "X X"
ASI$(3) = "X X"
ASI$(4) = "X X"
ASI$(5) = "X X"
ASI$(6) = "X X"
ASI$(7) = "X X"
ASI$(8) = "X X"
ASI$(9) = "X X"
ASI$(10) = "X X"
ASJ$(1) = "X X"
ASJ$(2) = "X X"
ASJ$(3) = "X X"
ASJ$(4) = "X X"
ASJ$(5) = "X X"
ASJ$(6) = "X X"
ASJ$(7) = "X X"
ASJ$(8) = "X X"
ASJ$(9) = "X X"
ASJ$(10) = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X"
For i = 1 To 100
For j = 1 To 10
If Mid$(ASA$(j), i, 1) = "X" Then m(i, j) = 1
Next
Next
For i = 1 To 100
For j = 1 To 10
If Mid$(ASB$(j), i, 1) = "X" Then m(i, j + 10) = 1
Next
Next
For i = 1 To 100
For j = 1 To 10
If Mid$(Asc$(j), i, 1) = "X" Then m(i, j + 20) = 1
Next
Next
For i = 1 To 100
For j = 1 To 10
If Mid$(ASD$(j), i, 1) = "X" Then m(i, j + 30) = 1
Next
Next
For i = 1 To 100
For j = 1 To 10
If Mid$(ASE$(j), i, 1) = "X" Then m(i, j + 40) = 1
Next
Next
For i = 1 To 100
For j = 1 To 10
If Mid$(ASF$(j), i, 1) = "X" Then m(i, j + 50) = 1
Next
Next
For i = 1 To 100
For j = 1 To 10
If Mid$(ASG$(j), i, 1) = "X" Then m(i, j + 60) = 1
Next
Next
For i = 1 To 100
For j = 1 To 10
If Mid$(ASH$(j), i, 1) = "X" Then m(i, j + 70) = 1
Next
Next
For i = 1 To 100
For j = 1 To 10
If Mid$(ASI$(j), i, 1) = "X" Then m(i, j + 80) = 1
Next
Next
For i = 1 To 100
For j = 1 To 10
If Mid$(ASJ$(j), i, 1) = "X" Then m(i, j + 90) = 1
Next
Next
s$ = INPUT$(2)
1
direction:
s$ = ""
s$ = INKEY$
If s$ = "4" Then
alfa(1) = alfa(1) + 0.1
If vx(1) ^ 2 + vy(2) ^ 2 > drift Then
x(1, i(1)) = x(1, 0) - l * Sin(alfa(1) + 0.5)
y(1, i(1)) = y(1, 0) - l * Cos(alfa(1) + 0.5)
x(1, i(1) + 1) = x(1, 0) - l * Sin(alfa(1) - 0.5)
y(1, i(1) + 1) = y(1, 0) - l * Cos(alfa(1) - 0.5)
i(1) = i(1) + 2
If i(1) > 500 Then i(1) = 1
End If
End If
If s$ = "a" Then
alfa(2) = alfa(2) + 0.1
If vx(2) ^ 2 + vy(2) ^ 2 > drift Then
x(2, i(2)) = x(2, 0) - l * Sin(alfa(2) + 0.5)
y(2, i(2)) = y(2, 0) - l * Cos(alfa(2) + 0.5)
x(2, i(2) + 1) = x(2, 0) - l * Sin(alfa(2) - 0.5)
y(2, i(2) + 1) = y(2, 0) - l * Cos(alfa(2) - 0.5)
i(2) = i(2) + 2
If i(2) > 500 Then i(2) = 1
End If
End If
If s$ = "6" Then
alfa(1) = alfa(1) - 0.1
If vx(1) ^ 2 + vy(2) ^ 2 > drift Then
x(1, i(1)) = x(1, 0) - l * Sin(alfa(1) + 0.5)
y(1, i(1)) = y(1, 0) - l * Cos(alfa(1) + 0.5)
x(1, i(1) + 1) = x(1, 0) - l * Sin(alfa(1) - 0.5)
y(1, i(1) + 1) = y(1, 0) - l * Cos(alfa(1) - 0.5)
i(1) = i(1) + 2
If i(1) > 500 Then i(1) = 1
End If
End If
If s$ = "d" Then
alfa(2) = alfa(2) - 0.1
If vx(2) ^ 2 + vy(2) ^ 2 > drift Then
x(2, i) = x(2, 0) - l * Sin(alfa(2) + 0.5)
y(2, i) = y(2, 0) - l * Cos(alfa(2) + 0.5)
x(2, i + 1) = x(2, 0) - l * Sin(alfa(2) - 0.5)
y(2, i + 1) = y(2, 0) - l * Cos(alfa(2) - 0.5)
i(2) = i(2) + 2
If i(2) > 500 Then i(2) = 1
End If
End If
'ax = 0
'ay = 0
If s$ = "8" Then If gas(1) < l / 10 Then gas(1) = gas(1) + 0.1
If s$ = "w" Then If gas(2) < l / 10 Then gas(2) = gas(2) + 0.1
If s$ = "2" Then If gas(1) > -0.2 Then gas(1) = gas(1) - 0.1
If s$ = "s" Then If gas(2) > -0.2 Then gas(2) = gas(2) - 0.1
shooot:
If s$ = "5" And (vx(1) <> 0 Or vy(1) <> 0) Then
shot(1) = 1
xshot(1) = x(1, 0)
yshot(1) = y(1, 0)
vxshot(1) = 1.7 * l * Sin(alfa(1))
vyshot(1) = 1.7 * l * Cos(alfa(1))
End If
t2 = Timer
If t2 - t1 > dt Then
moves:
For i = 1 To N
ax(i) = Sin(alfa(i)) * gas(i)
ay(i) = Cos(alfa(i)) * gas(i)
x(i, 0) = x(i, 0) + vx(i)
y(i, 0) = y(i, 0) + vy(i)
vx(i) = vx(i) * 9 / 10
vy(i) = vy(i) * 9 / 10
vx(i) = vx(i) + ax(i)
vy(i) = vy(i) + ay(i)
If shot(i) = 1 Then
xshot(i) = xshot(i) + vxshot(i)
yshot(i) = yshot(i) + vyshot(i)
End If
Next
crash:
For i = 1 To N
For j = 1 To N
If i <> j Then
'acrossb = SQR((vx(i) ^ 2 + vy(i) ^ 2) * (vx(j) ^ 2 + vy(j) ^ 2) - (vx(i) * vx(j) + vy(i) * vy(j)) ^ 2)
'IF shot(j) = 1 AND (x(i, 0) - xshot(j)) ^ 2 + (y(i, 0) - yshot(j)) ^ 2 < l ^ 2 THEN PRINT "crash": INPUT a
If (x(i, 0) - x(j, 0)) ^ 2 + (y(i, 0) - y(j, 0)) ^ 2 < l ^ 2 Then
vx(i) = vx(i) + z * (x(i, 0) - x(j, 0))
vx(j) = vx(j) + z * (x(j, 0) - x(i, 0))
vy(i) = vy(i) + z * (y(i, 0) - y(j, 0))
vy(j) = vy(j) + z * (y(j, 0) - y(i, 0))
End If
End If
Next
If m((x(i, 0) + blocks / 2) \ blocks, (y(i, 0) + blocks / 2) \ blocks) = 1 Then vx(i) = vx(i) + 0.02 * (x0 + ((x(i, 0) + blocks / 2) \ blocks) * blocks): vy(i) = vy(i) + 0.02 * (((y(i, 0) + blocks / 2) \ blocks) * blocks)
Next
graphic:
'screen moving
x0 = 300 - x(1, 0)
y0 = 150 - y(1, 0)
Cls
For i = 1 To N
For j = 1 To 500 Step 2
PSet (x0 + x(i, j), y0 + y(i, j)), 4
If (x(i, j) - xg(i)) ^ 2 + (yg(i) - y(i, j)) ^ 2 < 700 Then Line (x0 + xg(i), y0 + yg(i))-(x0 + x(i, j), y0 + y(i, j)), 4
xg(i) = x(i, j)
yg(i) = y(i, j)
Next
For j = 2 To 500 Step 2
PSet (x0 + x(i, j), y0 + y(i, j)), 4
If (x(i, j) - xg(i)) ^ 2 + (yg(i) - y(i, j)) ^ 2 < 700 Then Line (x0 + xg(i), y0 + yg(i))-(x0 + x(i, j), y0 + y(i, j)), 4
xg(i) = x(i, j)
yg(i) = y(i, j)
Next
Print x(i, 0), y(i, 0), vxshot(1), vyshot(1)
If shot(i) = 1 Then
andaze = Sqr(vxshot(i) ^ 2 + vyshot(i) ^ 2)
Line (x0 + xshot(i) - (vxshot(i)), y0 + yshot(i) - (vyshot(i)))-(x0 + xshot(i) + (vxshot(i)), y0 + yshot(i) + (vyshot(i))), 5
End If
Line (x0 + x(i, 0) - l * Sin(alfa(i) + 0.5), y0 + y(i, 0) - l * Cos(alfa(i) + 0.5))-(x0 + x(i, 0) - l * Sin(alfa(i) - 0.5), y0 + y(i, 0) - l * Cos(alfa(i) - 0.5))
Line (x0 + x(i, 0) - l * Sin(alfa(i) + 0.5), y0 + y(i, 0) - l * Cos(alfa(i) + 0.5))-(x0 + x(i, 0) + l * Sin(alfa(i) - 0.5), y0 + y(i, 0) + l * Cos(alfa(i) - 0.5))
Line (x0 + x(i, 0) + l * Sin(alfa(i) - 0.5), y0 + y(i, 0) + l * Cos(alfa(i) - 0.5))-(x0 + x(i, 0) + l * Sin(alfa(i) + 0.5), y0 + y(i, 0) + l * Cos(alfa(i) + 0.5))
Line (x0 + x(i, 0) - l * Sin(alfa(i) - 0.5), y0 + y(i, 0) - l * Cos(alfa(i) - 0.5))-(x0 + x(i, 0) + l * Sin(alfa(i) + 0.5), y0 + y(i, 0) + l * Cos(alfa(i) + 0.5))
Next
Line (x0 + ((x(1, 0) + blocks / 2) \ blocks) * blocks, y0 + ((y(1, 0) + blocks / 2) \ blocks) * blocks)-(x0 + (x(1, 0)), y0 + (y(1, 0)))
For i = 1 To 100
For j = 1 To 100
If m(i, j) = 1 Then Circle (x0 + i * blocks, y0 + j * blocks), blocks / 2, , , , 1
Next
Next
t1 = t2
End If
's$ = INPUT$(1)
GoTo 1
shayad exe sho ham bezaram