Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Игры на VBNet Добавлено: 04.06.06 11:19  

Автор вопроса:  Nikolai
Вообще можно ли сделать какую нибудь игру на VBNet
Наподобии Героев 5 или от первого лица да плювать
хоть 2-х мерную для начала.

Ответить

  Ответы Всего ответов: 22  

Номер ответа: 1
Автор ответа:
 a



ICQ: 267-795-129 

Вопросов: 2
Ответов: 5
 Профиль | | #1 Добавлено: 04.06.06 12:26
Если у тебя много нервных клеток,собственный завод по производству пива,уйма свободного времени,ОГРОМНОЕ желание сделать игру тогда можно !
вот тебе для примера код. самолёт летит простое управление и нечего больше ! (между прочим скачено на этом сайте в разделе примеры)
Поверь в героях 5 операторов на мнооооооооооооооооооооооооооооооооооооооооооооооооооооого больше !!!
ТАК что вот так !

Private Sub Form_Load()
Me.Caption = "Инициализация DirectX..."
Me.Show
Running = True
 
Inits.InitDI
 
Select Case frmOpt.lstDevice.ListIndex
Case 0
rdev = "IID_IDirect3DHALDevice"
Case 1
rdev = "IID_IDirect3DRGBDevice"
Case 2
rdev = "IID_IDirect3DMMXDevice"
End Select

Select Case frmOpt.lstRes.ListIndex
Case 0
screenX = 320: screenY = 240: screenBPP = 16
Case 1
screenX = 320: screenY = 240: screenBPP = 32
Case 2
screenX = 640: screenY = 480: screenBPP = 16
Case 3
screenX = 640: screenY = 480: screenBPP = 32
Case 4
screenX = 800: screenY = 600: screenBPP = 16
Case 5
screenX = 800: screenY = 600: screenBPP = 32
Case 6
screenX = 1024: screenY = 768: screenBPP = 16
Case 7
screenX = 1024: screenY = 768: screenBPP = 32
End Select

Select Case frmOpt.Windowed.Value
Case 0
Inits.InitFullScreen Me.hWnd, screenX, screenY, screenBPP, rdev
Case 1
screenX = Me.ScaleWidth: screenY = Me.ScaleHeight
Inits.InitWindowed Me, rdev
End Select

5 Scenes.SetDefaults
Scenes.CreateObjects

Select Case frmOpt.lstShading.ListIndex
Case 0
Device.SetQuality D3DRMRENDER_FLAT
Case 1
Device.SetQuality D3DRMRENDER_GOURAUD
Case 2
Device.SetQuality D3DRMRENDER_PHONG
End Select

Select Case rdev
Case "IID_IDirect3DHALDevice"
dname = ";Direct3D HAL"
Case "IID_IDirect3DRGBDevice"
dname = "RGB Emulation"
Case "IID_IDirect3DMMXDevice"
dname = "MMX Driver"
End Select

Select Case frmOpt.Dither.Value
Case 0
Device.SetDither D_FALSE
Case 1
Device.SetDither D_TRUE
End Select

Me.Caption = ";Direct3DRM Engine"
Me.Caption = Me.Caption & " - " & dname & " - " & screenX & "x" & screenY

If frmOpt.Windowed.Value = 1 Then Unload frmOpt: RunWindowed Else Unload frmOpt: Run
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Running = False
End Sub

Sub Run()
Do While Running = True
 ;DoEvents
      Inits.GetFPS
     
      Scene.Move 1
      Inits.DX_input

      Viewport.Clear D3DRMCLEAR_TARGET Or D3DRMCLEAR_ZBUFFER
      ;Device.Update
      Viewport.Render Scene
      dds4Primary.Flip Nothing, DDFLIP_WAIT
Loop
Inits.KillObjects
End
End Sub

Sub RunWindowed()
Do While Running = True
DoEvents
Inits.DX_input_windowed
d3drm.Tick 1
Loop
Inits.KillObjects
End
End Sub

форма опций

Private Sub Form_Load()
lstDevice.ListIndex = 0
lstRes.ListIndex = 2
lstShading.ListIndex = 1
Me.Caption = Me.Caption & " v. " & App.Major & "." & App.Minor & "." & App.Revision & " [Fligth Simulator]"
End Sub

Private Sub Windowed_Click()
Select Case Windowed.Value
Case 0
lstRes.Enabled = True
Case 1
lstRes.Enabled = False
End Select
End Sub

модуль 1
Option Explicit

Public dx As New DirectX7
Public dd7 As DirectDraw7
Public dd4 As DirectDraw4
Public d3drm As Direct3DRM3
Public ddsd As DDSURFACEDESC2
Public Caps As DDSCAPS2
Public Device As Direct3DRMDevice3
Public dds4Primary As DirectDrawSurface4
Public dds4Back As DirectDrawSurface4
Public Viewport As Direct3DRMViewport2
Public Clipper As DirectDrawClipper

Public Scene As Direct3DRMFrame3
Public Camera As Direct3DRMFrame3

Public DI As DirectInput
Public DIdevice As DirectInputDevice
Public DIState As DIKEYBOARDSTATE

Public dname As String
Public screenX As Long: Public screenY As Long: Public screenBPP As Long
Public rdev As String

Dim lastFPS As Long
Dim fps As Single

Public Running As Boolean
Public dAng: Public lAng: Public ZAng
Public ZPos: Public Pos: Public Pos2: Public Pos3

Sub Main()
frmOpt.Show
End Sub

Public Sub InitFullScreen(hWnd As Long, sX As Long, sY As Long, sBitDepth As Long, d As String)
  Set dd4 = dx.DirectDraw4Create("";)
  Call dd4.SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN Or DDSCL_ALLOWREBOOT)
  Call dd4.SetDisplayMode(sX, sY, sBitDepth, 0, DDSDM_DEFAULT)
  ddsd.lFlags = DDSD_BACKBUFFERCOUNT Or DDSD_CAPS
  ddsd.ddsCaps.lCaps = DDSCAPS_COMPLEX Or DDSCAPS_FLIP Or DDSCAPS_PRIMARYSURFACE Or DDSCAPS_3DDEVICE
  ddsd.lBackBufferCount = 1
  Set dds4Primary = dd4.CreateSurface(ddsd)
  Caps.lCaps = DDSCAPS_BACKBUFFER Or DDSCAPS_3DDEVICE
  Set dds4Back = dds4Primary.GetAttachedSurface(Caps)
  'D3DRM
  Set d3drm = dx.Direct3DRMCreate()

  Set Scene = d3drm.CreateFrame(Nothing)
  Set Camera = d3drm.CreateFrame(Scene)
  Set Device = d3drm.CreateDeviceFromSurface(d, dd4, dds4Back, D3DRMDEVICE_DEFAULT)
  Set Viewport = d3drm.CreateViewport(Device, Camera, 0, 0, sX, sY)
End Sub

Public Sub InitWindowed(Window As Form, d As String) 'Direct3D:RM в окне
Set dd7 = dx.DirectDrawCreate("";)
Set Clipper = dd7.CreateClipper(0)
Clipper.SetHWnd Window.hWnd
'D3DRM
Set d3drm = dx.Direct3DRMCreate
Set Device = d3drm.CreateDeviceFromClipper(Clipper, d, Window.ScaleWidth, Window.ScaleHeight)
Set Scene = d3drm.CreateFrame(Nothing)
Set Camera = d3drm.CreateFrame(Scene)
Set Viewport = d3drm.CreateViewport(Device, Camera, 0, 0, Device.GetWidth, Device.GetHeight)
End Sub

Public Sub InitDI()
Set DI = dx.DirectInputCreate
Set DIdevice = DI.CreateDevice("GUID_SysKeyboard";)
DIdevice.SetCommonDataFormat DIFORMAT_KEYBOARD
DIdevice.SetCooperativeLevel frmMain.hWnd, DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE
DIdevice.Acquire
End Sub

Public Sub KillObjects()
Set Viewport = Nothing
Set Device = Nothing
Set d3drm = Nothing
Set dd4 = Nothing
Set dd7 = Nothing
DIdevice.Unacquire
End Sub

Public Sub DX_input()
DIdevice.GetDeviceStateKeyboard DIState
If DIState.Key(DIK_ESCAPE) <> 0 Then Running = False
If DIState.Key(DIK_R) <> 0 Then
dds4Primary.SetForeColor RGB(255, 255, 0)
dds4Primary.DrawText 10, 10, fps & " FPS" & " (" & screenX & "x" & screenY & "x" & screenBPP & ";) " & dname, False
End If
If DIState.Key(DIK_UP) <> 0 Then
dAng = dAng + 0.01
World.AddRotation D3DRMCOMBINE_REPLACE, 1, 0, 0, dAng
World.AddRotation D3DRMCOMBINE_BEFORE, 0, 0, 1, lAng
End If
If DIState.Key(DIK_DOWN) <> 0 Then
dAng = dAng - 0.01
World.AddRotation D3DRMCOMBINE_REPLACE, 1, 0, 0, dAng
World.AddRotation D3DRMCOMBINE_BEFORE, 0, 0, 1, lAng
End If
If DIState.Key(DIK_LEFT) <> 0 Then
lAng = lAng + 0.01
World.AddRotation D3DRMCOMBINE_REPLACE, 1, 0, 0, dAng
World.AddRotation D3DRMCOMBINE_BEFORE, 0, 0, 1, lAng
End If
If DIState.Key(DIK_RIGHT) <> 0 Then
lAng = lAng - 0.01
World.AddRotation D3DRMCOMBINE_REPLACE, 1, 0, 0, dAng
World.AddRotation D3DRMCOMBINE_BEFORE, 0, 0, 1, lAng
End If
If DIState.Key(DIK_Z) <> 0 Then ZPos = ZPos + 0.01
If DIState.Key(DIK_X) <> 0 Then ZPos = ZPos - 0.01
If ZPos < 0 Then ZPos = 0.5
If lAng > 1 Then lAng = 1
If lAng < -1 Then lAng = -1

Pos = Pos + ZPos
Pos2 = Pos2 + -(dAng)
Pos3 = Pos3 + -(lAng) / 3

World.SetPosition Nothing, Pos3, Pos2, Pos
Camera.SetPosition Nothing, Pos3, Pos2, Pos - 20
LFrame.SetPosition Nothing, Pos3 - 300, Pos2 + 300, Pos - 100
LFrame2.SetPosition Nothing, Pos3, Pos2 - 30, Pos - 100
End Sub

Public Sub DX_input_windowed()
DIdevice.GetDeviceStateKeyboard DIState
If DIState.Key(DIK_ESCAPE) <> 0 Then Running = False
End Sub

Public Sub GetFPS()
Dim t As Long
t = dx.TickCount

Static fcount As Long

fcount = fcount + 1
If fcount = 30 Then
t = dx.TickCount()
fps = 30000 / (t - lastFPS)
fcount = 0
lastFPS = t
End If
End Sub

модуль 2

Public World As Direct3DRMFrame3
Public MeshBuilder As Direct3DRMMeshBuilder3
Public Light As Direct3DRMLight
Public LFrame As Direct3DRMFrame3
Public LandScape As Direct3DRMFrame3
Public MeshBuilder2 As Direct3DRMMeshBuilder3
Public Light2 As Direct3DRMLight
Public Sky As Direct3DRMTexture3
Public LFrame2 As Direct3DRMFrame3
Public Land As Direct3DRMTexture3
Public Wrap As Direct3DRMWrap

Sub SetDefaults()

'Camera position
Camera.SetPosition Nothing, 0, 1, -20

Set World = d3drm.CreateFrame(Scene)
Set LandScape = d3drm.CreateFrame(Scene)
Set Sky = d3drm.LoadTexture(App.Path + "\TEXTURES\sky.bmp";)
Set Land = d3drm.LoadTexture(App.Path + "\TEXTURES\land.bmp";)
Set Wrap = d3drm.CreateWrap(D3DRMWRAP_FLAT, Nothing, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.05, 0.05)

'World.SetRotation Nothing, 0, 0, 0, 0.01
World.SetPosition Nothing, 0, 0, 0
LandScape.SetPosition Nothing, 0, -40, -1

Scene.AddLight d3drm.CreateLight(D3DRMLIGHT_AMBIENT, dx.CreateColorRGB(0.8, 0.8, 0.8))
Set MeshBuilder = d3drm.CreateMeshBuilder
Set MeshBuilder2 = d3drm.CreateMeshBuilder

'Light
Set LFrame = d3drm.CreateFrame(Scene)
Set LFrame2 = d3drm.CreateFrame(Scene)
Set Light = d3drm.CreateLightRGB(D3DRMLIGHT_POINT, 1, 1, 1)
Set Light2 = d3drm.CreateLightRGB(D3DRMLIGHT_POINT, 1, 1, 1)
LFrame.AddLight Light
LFrame2.AddLight Light2

Device.SetTextureQuality D3DRMTEXTURE_LINEAR

Scene.SetSceneBackgroundImage Sky
Viewport.SetBack 300

ZPos = 0.5
End Sub


Sub CreateObjects()
MeshBuilder.LoadFromFile App.Path + "\MODELS\747.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing
MeshBuilder2.LoadFromFile App.Path + "\MODELS\rectan.x", 0, D3DRMLOAD_FROMFILE, Nothing, Nothing
'MeshBuilder.SetColorRGB 0.6, 0.7, 0.8
MeshBuilder.ScaleMesh 0.07, 0.07, 0.07
World.AddVisual MeshBuilder
MeshBuilder2.ScaleMesh 10000, 10000, 10000
MeshBuilder2.SetColorRGB 1, 1, 1
MeshBuilder2.SetPerspective D_TRUE
'MeshBuilder2.SetColorRGB 0.1, 1, 0.2
Wrap.Apply MeshBuilder2
MeshBuilder2.SetTexture Land
LandScape.AddVisual MeshBuilder2
'Camera.LookAt World, Nothing, D3DRMCONSTRAIN_Z
'MeshBuilder.Translate 1, 3, -2
End Sub



Ответить

Номер ответа: 2
Автор ответа:
 Nikolai



Вопросов: 23
Ответов: 58
 Профиль | | #2 Добавлено: 04.06.06 16:36
Проблема не в том что код занимает 100 страниц
Мне интересно посмотреть способы програмирования коды примеры, когда я делал игры на "Spektrume"
у меня квест Basic-занимал 30-40 страниц и Assambler стоко-же. Кстати тут много выдаёт ошибок дай ссылку скачать весь проект ,а то я не нашёл.

Ответить

Номер ответа: 3
Автор ответа:
 dr.Faust



Вопросов: 6
Ответов: 26
 Профиль | | #3 Добавлено: 05.06.06 08:33

Sokoban для спектрума у меня умещался меньше чем в 1000 строк, даже со всеми прибамбасами.

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 05.06.06 13:12
Кстати тут много выдаёт ошибок

Ничего удивительного.. это же код на VB6

Ответить

Номер ответа: 5
Автор ответа:
 Nikolai



Вопросов: 23
Ответов: 58
 Профиль | | #5 Добавлено: 05.06.06 17:01
Да уж понял блин ! хотя вопрос был :
Вообще можно ли сделать какую нибудь игру на VBNet
Наподобии Героев 5 или от первого лица да плювать
хоть 2-х мерную для начала.

но всё равно спасиво .

Ответить

Номер ответа: 6
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #6 Добавлено: 05.06.06 23:15
Можно. Есть даже бестолковые люди, которые делают довольно большую стратегию на нём... Например - я...
Взял например Managed DirectX. Все на программируемом конвейере.

Хочешь посмотреть на что-то вроде ScreenShot. Только не смотри на модель - тут текстур нету.

http://sergekkim.narod.ru/Shadow_Ready.JPG

Ответить

Номер ответа: 7
Автор ответа:
 Nikolai



Вопросов: 23
Ответов: 58
 Профиль | | #7 Добавлено: 06.06.06 17:59
Для dr.Faust , Я когда создал догонялки на "Spectrume" у меня код только проверки на движения причём на ассамблере был несколько страниц , а если игра будет из нескольких тысяч строк то это же лудше для меня програмировать тоже что и собирать головоломку чем больше тем лудше.

Ответить

Номер ответа: 8
Автор ответа:
 Nikolai



Вопросов: 23
Ответов: 58
 Профиль | | #8 Добавлено: 06.06.06 18:03
Для K&M А где код или лудше проект у меня VBNet 2005 если есть ещё ссылки то давай все , кстати и без текстур неплохо непрочь сыграть . Напоминает Dune2.

Ответить

Номер ответа: 9
Автор ответа:
 Nikolai



Вопросов: 23
Ответов: 58
 Профиль | | #9 Добавлено: 06.06.06 21:50
Анекдот в тему :
Размышления опытного пользователя:
Жизнь-компьютерная игра.Задумка-
паршивая, но графика обалденная.

Ответить

Номер ответа: 10
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #10 Добавлено: 07.06.06 09:43
Я думаю поиграть не получится, т.к. парень, который делает мне модели стопарнулся и я без них не могу продолжать работу.

Ответить

Номер ответа: 11
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #11 Добавлено: 07.06.06 12:35
Чтоб без ошибок было вставь в референс ~~Directx 7 object library for vb

Ответить

Номер ответа: 12
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #12 Добавлено: 07.06.06 12:51
Чтоб без ошибок было вставь в референс ~~Directx 7 object library for vb

Ответить

Номер ответа: 13
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #13 Добавлено: 07.06.06 13:01
У меня есть проектик- игра CYBER, если хош-коннектись, будем писать вместе.

Ответить

Номер ответа: 14
Автор ответа:
 Nikolai



Вопросов: 23
Ответов: 58
 Профиль | | #14 Добавлено: 07.06.06 17:07
Привет Fever! Спасибо конечно за предложение но есть пару проблем во первых я ещё не совсем
хорошо освоил VBNet (посмотри мои дуратские вопросы), а во вторых летом времени нет(иногда
неделю за компом меня нет (чисто почту проверяю )), но если у тебя есть проект я не откажусь
что б ты его прислал я б с удовольствием посмотрел бы его. Было б хорошо если строчки
 подписаны какая что делает .Кстати у меня VBNet 2005 и референс не помогает.

Ответить

Номер ответа: 15
Автор ответа:
 Nikolai



Вопросов: 23
Ответов: 58
 Профиль | | #15 Добавлено: 07.06.06 17:08
Ты с какого города?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам