ورود

نسخه کامل مشاهده نسخه کامل : انجمن بازی نویسان



vandu
01-09-2006, 12:03
سلام به همه برنامه نویسای عزیز! :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) یه چیزی هست که کارت رو (در نهایت سادگی) خیلی با ارزش می کنه: نوآوری و خلاقیت!

خب مثل اینکه زیادی حرف زدم!
به امید همکاری شما... :)

imi_undertaker
02-09-2006, 15:39
دوستان من تا كنون بازي هاي زيادي رو نوشتم فعلا در حد توضيح مي تونم بهتون كمك كنم تا چند وقت ديگه همه بازي هامو پك مي كنم و براتون مي ذارم :
نمونه بازي هايي كه نوشتم :
j2se :
شبيه سازي Age of empires
tetris
snake
battle ship
minesweeper
بازي چتر بازها
j2me :
tetris
snake
و ... كه نمونه بعضي از اين ها رو با پاسكال و وي بي هم دارم .

mrroohian
21-09-2006, 17:23
با سلام من مدت زيادي(در حدود 3 سال) پيگير نوشتن بازي 3 بعدي بوده ام و ِdirectx رو هم زيرو رو كردم يه دمو هم تهيه كردم. ولي كار game با يك تفر و دو نفر نميشه. مشكل اصلي من هم يك طرااح 3 بعدي خوب و يك ايده و داستان هست.
اگر شد دمو رو هم ميذارم روي سايتم. به نظر من نوشتن بازي ممكن هست ولي گروه خوب نياز داره.
(چند تا بازي دو بعدي هم دارم كه اگه شد اونا رو هم upload مي كنم )

sm_315
12-12-2006, 10:55
جون هرکی که دوست داری دستور نوشتن snake توسط پاسکال رو به من بده

nokhbeh100
27-01-2008, 16:02
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) = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
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) = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
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