游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4315|回复: 9

一个不懂游戏开发的同志.带着你地疑问进来吧 <---

[复制链接]

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
QQ
发表于 2005-5-18 22:49:00 | 显示全部楼层 |阅读模式
abc
1.游戏引擎是用来做什么的?

2.怎样将场景和代码结合起来做成游戏?

3.哪个大哥能否给一些脚本实例给我们参考一下(VB\JAVA\C#\C++都可)
[em3]

4.游戏中地交互性问题是彼实现的?

5.自己弄一点编程和图形制作工具如何先体会做一像五子棋那样小的小游戏(单机)?

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20686
发表于 2005-5-19 09:33:00 | 显示全部楼层

Re:一个不懂游戏开发的同志.带着你地疑问进来吧 <---

1、顾名思义,引擎可以看作提供基础动力的东西;
2、不知道楼主说的场景是指什么,如果是图片的话,那就是需要代码去装载图片并绘制;
3、脚本。。。把VB的代码当作脚本来考虑,Basic语法语句就是脚本;
4、交互可以是一种触发,碰触某样东西产生某个反应;
5、可以把需求具体化,比如:做一个五子棋,那我们首先要能画图,化整为零,慢慢去深入每项技术细节。

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-5-21 00:45:00 | 显示全部楼层

Re:一个不懂游戏开发的同志.带着你地疑问进来吧 <---

还是老大厉害

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-5-21 00:47:00 | 显示全部楼层

Re:一个不懂游戏开发的同志.带着你地疑问进来吧 <---

不知道什么时候才能有那么多个星呢

0

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
QQ
发表于 2005-5-21 17:25:00 | 显示全部楼层

Re:一个不懂游戏开发的同志.带着你地疑问进来吧 <---

站长。?
楼主。?
2问题比较  -_-!  ,啊?图片和代码如何结合在一起地嘛,代码去装载图片并绘制是什么意思哦。
我现在手里就是很多图片。。用什么软件把代码装载图片嘛。。。。急死了//、、

啊?楼主第五个问题站长能不说明白一点嘛。我什么都还不知道

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-5-21 22:13:00 | 显示全部楼层

Re:一个不懂游戏开发的同志.带着你地疑问进来吧 <---



这首先要是一个程序员的前提下才能看得明白的。

50

主题

382

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2005-5-22 09:19:00 | 显示全部楼层

Re:一个不懂游戏开发的同志.带着你地疑问进来吧 <---

装载图片 很简单只要一个语句

VB6 的写法
例:Picture1.Picture=LoadPicture(“C:\Image.bmp&quot;)

当然使用不同的语言或不同的类库会有不同的写法,但大同小异

极同意茹枫兄的意见 “首先要是一个程序员的前提下才能看得明白的。”

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
发表于 2005-5-23 13:53:00 | 显示全部楼层

Re:一个不懂游戏开发的同志.带着你地疑问进来吧 <---

老大正解,拜

69

主题

450

帖子

473

积分

中级会员

战魂缔造者

Rank: 3Rank: 3

积分
473
QQ
发表于 2005-5-24 09:08:00 | 显示全部楼层

Re:一个不懂游戏开发的同志.带着你地疑问进来吧 <---

同意版主的观点2
VB本身就是个脚本语言,所以千万不要拿VB和C比较.各有优点

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
QQ
 楼主| 发表于 2005-5-30 13:33:00 | 显示全部楼层

Re:一个不懂游戏开发的同志.带着你地疑问进来吧 <---

????
谢谢各位同志的指点,说实话我还是不怎么了解,现在就动手做一做试试:

1.Microsoft Visual Studio .NET 2003-----&gt;VB
2.图片-五子棋盘一张.
3:代码如下:定义虚拟桌面:
Dim table(9, 9) As Integer
  定义当前玩家桌面空格的分数:
Dim pscore(9, 9) As Integer
  定义当前电脑桌面空格的分数:
Dim cscore(9, 9) As Integer
  定义玩家的获胜组合:
Dim pwin(9, 9, 191) As Boolean
  定义电脑的获胜组合:
Dim cwin(9, 9, 191) As Boolean
  定义玩家的获胜组合标志:
Dim pflag(191) As Boolean
  定义电脑的获胜组合标志:
Dim cflag(191) As Boolean
  定义游戏有效标志:
Dim theplayflag As Boolean
  三、初始化游戏
'*****************************************************************************
'** 模块名称: initplayenvironment
'**
'** 描述: 此函数主要功能如下:
'** 1. 设置背景音乐。
'** 2. 设置游戏状态有效。
'** 3. 初始化游戏状态标签。
'** 4. 直接指定电脑的第一步走法。
'** 5. 初始化基本得分桌面。
'** 6. 电脑和玩家获胜标志初始化。
'** 7. 初始化所有获胜组合。
'** 8. 重新设定玩家的获胜标志。
'**
'*****************************************************************************
Sub initplayenvironment()
player.FileName = &quot;.\music\zhyu01.mid&quot;
player.Play()
theplayflag = True
'游戏有效
Label1.Visible = False
'游戏状态标签不显示
PictureBox1.Refresh()
'清空picturebox1的内容
yuandian(130, 130)
'调用绘图函数绘制当前电脑先走的位置
Dim i, j, m, n As Integer
For i = 0 To 9
For j = 0 To 9
table(i, j) = 0
Next
Next
'桌面初始化
For i = 0 To 191
pflag(i) = True
cflag(i) = True
Next
'获胜标志初始化
table(4, 4) = 1
'由于我们设定电脑先手,并下了4,4位所以将其值设为1
''' ******** 初始化获胜组合 ********
n = 0
For i = 0 To 9
For j = 0 To 5
For m = 0 To 4
pwin(j + m, i, n) = True
cwin(j + m, i, n) = True
Next
n = n + 1
Next
Next
For i = 0 To 9
For j = 0 To 5
For m = 0 To 4
pwin(i, j + m, n) = True
cwin(i, j + m, n) = True
Next
n = n + 1
Next
Next
For i = 0 To 5
For j = 0 To 5
For m = 0 To 4
pwin(j + m, i + m, n) = True
cwin(j + m, i + m, n) = True
Next
n = n + 1
Next
Next
For i = 0 To 5
For j = 9 To 4 Step -1
For m = 0 To 4
pwin(j - m, i + m, n) = True
cwin(j - m, i + m, n) = True
Next
n = n + 1
Next
Next
''' ******** 初始化获胜组合结束 ********
For i = 0 To 191
If pwin(4, 4, i) = True Then
pflag(i) = False
End If
Next
'由于电脑已下了4,4位所以我们需要重新设定玩家的获胜标志
End Sub
  四,处理鼠标事件
'*****************************************************************************
'** 模块名称: themousedown
'**
'** 描述: 此函数主要实行以下功能:
'** 1. 判定当前游戏标志是否有效。
'** 2. 将实际坐标转化成虚拟坐标。
'** 3. 绘制玩家的棋子。
'** 4. 执行检查获胜函数。
'** 5. 执行电脑算法函数。
'**
'*****************************************************************************
Sub themousedown(ByVal x As Integer, ByVal y As Integer)
If theplayflag = False Then
Exit Sub
End If
'检查游戏状态是否有效
Dim i, j As Integer
Dim zhx, zhy As Integer
zhx = Int((x - 10) / 30)
zhy = Int((y - 10) / 30)
For i = 0 To 9
For j = 0 To 9
If table(zhx, zhy) &gt; 0 Then
Exit Sub
End If
Next
Next
'检查当前鼠标点击的格子是否有效
Dim mycolor As Color
Dim g As System.Drawing.Graphics
g = PictureBox1.CreateGraphics
mycolor = Color.White
Dim brush1 As System.Drawing.Brush = New SolidBrush(mycolor)
g.FillEllipse(brush1, zhx * 30 + 10, zhy * 30 + 10, 30, 30)
'绘制玩家的棋子
table(zhx, zhy) = 2
For i = 0 To 191
If cwin(zhx, zhy, i) = True Then
cflag(i) = False
End If
Next
'重设电脑的获胜标志
checkwin()
'检查当前玩家是否获胜
diannao()
'调用电脑算法
End Sub
  五、获胜检查算法。
'*****************************************************************************
'** 模块名称: checkwin
'**
'** 描述: 此模块执行以下功能:
'** 1. 检查是否和棋。
'** 2. 检查电脑是否获胜。
'** 3. 检查玩家是否获胜。
'**
'*****************************************************************************
Sub checkwin()
Dim i, j, k, m, n As Integer
Dim ca As Integer
Dim pa As Integer
Dim cnormal As Integer = 0
For i = 0 To 191
If cflag(i) = False Then
cnormal = cnormal + 1
End If
Next
If cnormal = 190 Then
Label1.Visible = True
Label1.Text = &quot;和棋,请重新开始!&quot;
PictureBox1.Refresh()
theplayflag = False
Exit Sub
End If
'设定和棋规则
For i = 0 To 191
If cflag(i) = True Then
ca = 0
For j = 0 To 9
For k = 0 To 9
If table(j, k) = 1 Then
If cwin(j, k, i) = True Then
ca = ca + 1
End If
End If
Next
Next
If ca = 5 Then
Label1.Visible = True
Label1.Text = &quot;电脑获胜,请重新开始&quot;
PictureBox1.Refresh()
theplayflag = False
Exit Sub
End If
End If
Next
'检查电脑是否获胜
For i = 0 To 191
If pflag(i) = True Then
pa = 0
For j = 0 To 9
For k = 0 To 9
If table(j, k) = 2 Then
If pwin(j, k, i) = True Then
pa = pa + 1
End If
End If
Next
Next
If pa = 5 Then
Label1.Visible = True
Label1.Text = &quot;玩家获胜,请重新开始&quot;
PictureBox1.Refresh()
theplayflag = False
Exit Sub
End If
End If
Next
'检查玩家是否获胜
End Sub
六、电脑算法
'*****************************************************************************
'** 模块名称: diannao
'**
'** 描述: 此程序主要执行以下功能:
'** 1. 初始化赋值系统。
'** 2. 赋值加强算法。
'** 3. 计算电脑和玩家的最佳攻击位。
'** 4. 比较电脑和玩家的最佳攻击位并决定电脑的最佳策略。
'** 5. 执行检查获胜函数。
'**
'*****************************************************************************
Sub diannao()
Dim i, j, k, m, n As Integer
Dim dc As Integer
Dim cab As Integer
Dim pab As Integer
For i = 0 To 9
For j = 0 To 9
pscore(i, j) = 0
cscore(i, j) = 0
Next
Next
'初始化赋值数组
''' ******** 电脑加强算法 ********
For i = 0 To 191
If cflag(i) = True Then
cab = 0
For j = 0 To 9
For k = 0 To 9
If table(j, k) = 1 Then
If cwin(j, k, i) = True Then
cab = cab + 1
End If
End If
Next
Next
Select Case cab
Case 3
For m = 0 To 9
For n = 0 To 9
If table(m, n) = 0 Then
If cwin(m, n, i) = True Then
cscore(m, n) = cscore(m, n) + 5
End If
End If
Next
Next
Case 4
For m = 0 To 9
For n = 0 To 9
If table(m, n) = 0 Then
If cwin(m, n, i) = True Then
yuandian(m * 30 + 10, n * 30 + 10)
table(m, n) = 1
For dc = 0 To 191
If pwin(m, n, dc) = True Then
pflag(dc) = False
checkwin()
Exit Sub
End If
Next
End If
End If
Next
Next
End Select
End If
Next
For i = 0 To 191
If pflag(i) = True Then
pab = 0
For j = 0 To 9
For k = 0 To 9
If table(j, k) = 2 Then
If pwin(j, k, i) = True Then
pab = pab + 1
End If
End If
Next
Next
Select Case pab
Case 3
For m = 0 To 9
For n = 0 To 9
If table(m, n) = 0 Then
If pwin(m, n, i) = True Then
pscore(m, n) = pscore(m, n) + 30
End If
End If
Next
Next
Case 4
For m = 0 To 9
For n = 0 To 9
If table(m, n) = 0 Then
If pwin(m, n, i) = True Then
yuandian(m * 30 + 10, n * 30 + 10)
table(m, n) = 1
For dc = 0 To 191
If pwin(m, n, dc) = True Then
pflag(dc) = False
checkwin()
Exit Sub
End If
Next
End If
End If
Next
Next
End Select
End If
Next
''' ******** 电脑加强算法结束 ********
' ******** 赋值系统 ********
For i = 0 To 191
If cflag(i) = True Then
For j = 0 To 9
For k = 0 To 9
If table(j, k) = 0 Then
If cwin(j, k, i) = True Then
For m = 0 To 9
For n = 0 To 9
If table(m, n) = 1 Then
If cwin(m, n, i) = True Then
cscore(j, k) = cscore(j, k) + 1
End If
End If
Next
Next
End If
End If
Next
Next
End If
Next
For i = 0 To 191
If pflag(i) = True Then
For j = 0 To 9
For k = 0 To 9
If table(j, k) = 0 Then
If pwin(j, k, i) = True Then
For m = 0 To 9
For n = 0 To 9
If table(m, n) = 2 Then
If pwin(m, n, i) = True Then
pscore(j, k) = pscore(j, k) + 1
End If
End If
Next
Next
End If
End If
Next
Next
End If
Next
''' ******** 赋值系统结束 ********
''' ******** 分值比较算法 ********
Dim a, b, c, d As Integer
Dim cs As Integer = 0
Dim ps As Integer = 0
For i = 0 To 9
For j = 0 To 9
If cscore(i, j) &gt; cs Then
cs = cscore(i, j)
a = i
b = j
End If
Next
Next
For i = 0 To 9
For j = 0 To 9
If pscore(i, j) &gt; ps Then
ps = pscore(i, j)
c = i
d = j
End If
Next
Next
If cs &gt; ps Then
yuandian(a * 30 + 10, b * 30 + 10)
table(a, b) = 1
For i = 0 To 191
If pwin(a, b, i) = True Then
pflag(i) = False
End If
Next
Else
yuandian(c * 30 + 10, d * 30 + 10)
table(c, d) = 1
For i = 0 To 191
If pwin(c, d, i) = True Then
pflag(i) = False
End If
Next
End If
''' ******** 分值比较算法结束 ********
checkwin()
End Sub
  七、绘制棋子
'*****************************************************************************
'** 模块名称: yuandian
'**
'** 描述: 此函数主要进行电脑棋子的绘制。
'**
'*****************************************************************************
Sub yuandian(ByVal x As Integer, ByVal y As Integer)
Dim mycolor As Color
Dim g As System.Drawing.Graphics
g = PictureBox1.CreateGraphics
Dim zhx, zhy As Integer
zhx = Int((x - 10) / 30)
zhy = Int((y - 10) / 30)
mycolor = Color.Black
Dim brush1 As System.Drawing.Brush = New SolidBrush(mycolor)
g.FillEllipse(brush1, zhx * 30 + 10, zhy * 30 + 10, 30, 30)
End Sub  

.............接下来怎么做?player好像没有定义//

(由于才学VB不到半年,只能免强看懂一些/代码是我在网上下载地游戏又还没有入门.只能这样了..谢谢)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-25 19:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表