Главная   Добавить в избранное Greating game on visual basic with multiplayer system | лабораторная работа


Бесплатные Рефераты, дипломные работы, курсовые работы, доклады - скачать бесплатно Бесплатные Рефераты, дипломные работы, курсовые работы, доклады и т.п - скачать бесплатно.
 Поиск: 


Категории работ:
Рефераты
Дипломные работы
Курсовые работы
Контрольные работы
Доклады
Практические работы
Шпаргалки
Аттестационные работы
Отчеты по практике
Научные работы
Авторефераты
Учебные пособия
Статьи
Книги
Тесты
Лекции
Творческие работы
Презентации
Биографии
Монографии
Методички
Курсы лекций
Лабораторные работы
Задачи
Бизнес Планы
Диссертации
Разработки уроков
Конспекты уроков
Магистерские работы
Конспекты произведений
Анализы учебных пособий
Краткие изложения
Материалы конференций
Сочинения
Эссе
Анализы книг
Топики
Тезисы
Истории болезней
 




Greating game on visual basic with multiplayer system - лабораторная работа


Категория: Лабораторные работы
Рубрика: Программирование, компьютеры и кибернетика, ИТ технологии
Размер файла: 627 Kb
Количество загрузок:
153
Количество просмотров:
1631
Описание работы: лабораторная работа на тему Greating game on visual basic with multiplayer system
Подробнее о работе: Читать или Скачать
Смотреть
Скачать



2

AUTOMATIC SYSTEM

GREATING GAME ON VISUAL BASIC WITH MULTIPLAYER SYSTEM

Dushanbe, 2009

Main Interface

Source Code

Public lanchoice As Long address

Public details As String names

Public connected As Boolean if connected

Private Sub Form_Load ()

Connect. Icon = LoadResPicture ("ictac", vbResIcon) form icon

If usermode = "host" Then

join. Enabled = False

Else

host. Enabled = False

gamename. Visible = False

Label5. Visible = False

End If

End Sub

Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer)

call on form cancel or exit by control box on form

If connectionmade = False Then

MainBoard. hostagame. Enabled = True

MainBoard. joinagame. Enabled = True

Call CloseDownDPlay

multiplayermode = False

End If

MainBoard. Enabled = True

End Sub

Private Sub host_Click ()

On Error GoTo NO_Hosting error handler in case creating host fails

If playersname = "" Or gamename = "" Then

MsgBox "You must enter a Players name and Game Name", vbOKOnly, "Tic Tac Oops"

Exit Sub

End If

Call goplay starts direct play object

Dim address As DirectPlayAddress

Selects which choice was made for lan

Set address = EnumConnect. GetAddress (lanchoice)

Binds address to directplay connection

Call dxplay. InitializeConnection (address)

Starts sessiondata information

Dim SessionData As DirectPlaySessionData

Set SessionData = dxplay. CreateSessionData

Call SessionData. SetMaxPlayers (2)

Call SessionData. SetSessionName (gamename. Text)

Call SessionData. SetFlags (DPSESSION_MIGRATEHOST)

Call SessionData. SetGuidApplication (AppGuid)

Starts a new session initializes connection

Call dxplay. Open (SessionData, DPOPEN_CREATE)

Create Player profile

Dim PlayerName As String

Dim playerhandle As String

PlayerName = playersname. Text

profilename = PlayerName

playerhandle = "Player (Host)"

MyPlayer = dxplay. CreatePlayer (PlayerName, playerhandle, 0, 0)

dxHost = True

gameopen. Caption = gamename. Text

Call updatedisplay Updates game list

Label8. Caption = "Waiting for other Players"

Exit Sub

NO_Hosting:

MsgBox "Could not Host Game", vbOKOnly, "Try Again"

End Sub

Private Sub join_Click ()

On Error GoTo Oops

Call goplay

Dim address As DirectPlayAddress

Set address = EnumConnect. GetAddress (lanchoice)

Call dxplay. InitializeConnection (address)

Dim details2 As Byte

Dim SessionData As DirectPlaySessionData

Set SessionData = dxplay. CreateSessionData

Gets Session any open session info

Set EnumSession = dxplay. GetDPEnumSessions (SessionData, 0, DPENUMSESSIONS_AVAILABLE)

Set SessionData = EnumSession. GetItem (1)

Get open session name

details = SessionData. GetSessionName

If details > "" And usermode = "client" Then

joingame. Enabled = True

End If

Call updatedisplay

gameopen. Caption = details

Exit Sub

Oops:

MsgBox "Connection Failed", vbOKOnly, "Tic Tac Oops"

Exit Sub

End Sub

Public Function goplay ()

Set dxplay = dx7. DirectPlayCreate ("") open directplay object

gets connection types

Set EnumConnect = dxplay. GetDPEnumConnections ("", DPCONNECTION_DIRECTPLAY)

End Function

Private Sub joingame_Click ()

On Error GoTo Joinfailed

If playersname = "" Then

MsgBox "You must enter a Players name", vbOKOnly, "Tic Tac Oops"

Exit Sub

End If

Dim SessionData As DirectPlaySessionData

Set SessionData = EnumSession. GetItem (1)

Joins open session

Call dxplay. Open (SessionData, DPOPEN_JOIN)

creats and sends player info

PlayerName = playersname. Text

profilename = PlayerName

playerhandle = "Player (Client)"

MyPlayer = dxplay. CreatePlayer (PlayerName, playerhandle, 0, 0)

Call UpdateWaiting

joingame. Enabled = False

playersname. Enabled = False

MainBoard. mnuchat. Enabled = True

Exit Sub

Joinfailed:

MsgBox "Joining Session Failed", vbOKOnly, "No Session Found"

Exit Sub

End Sub

Public Sub UpdateWaiting ()

Dim StatusMsg As String

Dim x As Integer

Dim objDPEnumPlayers As DirectPlayEnumPlayers

Dim SessionData As DirectPlaySessionData

Enumerate players

On Error GoTo ENUMERROR

Set objDPEnumPlayers = dxplay. GetDPEnumPlayers ("", 0)

gNumPlayersWaiting = objDPEnumPlayers. GetCount

Update label

Set SessionData = dxplay. CreateSessionData

Call dxplay. GetSessionDesc (SessionData)

StatusMsg = gNumPlayersWaiting & " of " & SessionData. GetMaxPlayers _

& " players ready..."

Label8. Caption = StatusMsg

If gNumPlayersWaiting = SessionData. GetMaxPlayers And usermode = "host" Then

start. Enabled = True

Label8. Caption = "Everyone is here Click Start"

End If

If gNumPlayersWaiting = SessionData. GetMaxPlayers And usermode = "client" Then

start. Enabled = False

Label8. Caption = "Waiting For Host To Start Session"

End If

Update listbox

Dim PlayerName As String

For x = 1 To gNumPlayersWaiting

PlayerName = objDPEnumPlayers. GetShortName (x)

If PlayerName <> playersname. Text Then

labeljoined. Caption = PlayerName & " has joined the game."

opponentsname = PlayerName

End If

Call lstPlayers. AddItem (PlayerName)

Next x

Exit Sub

ENUMERROR:

MsgBox ("No Players Found")

Exit Sub

End Sub

Private Sub lantype_Click (Index As Integer)

lanchoice = Index + 1

host. Visible = True

join. Visible = True

End Sub

Private Sub start_Click ()

On Error GoTo CouldNotStart

Const msgsize = 21

Dim tnumplayers As DirectPlayEnumPlayers

Dim SessionData As DirectPlaySessionData

Disable joining, in case we start before maximum no. of players reached. We

dont want anyone slipping in at the last moment.

Set SessionData = dxplay. CreateSessionData

Call dxplay. GetSessionDesc (SessionData) necessary?

Call SessionData. SetFlags (SessionData. GetFlags + DPSESSION_JOINDISABLED)

Call dxplay. SetSessionDesc (SessionData)

Set global player count. This mustnt be done earlier, because someone might

have dropped out or joined just as the host clicked Start.

Set tnumplayers = dxplay. GetDPEnumPlayers ("", 0)

numplayers = CByte (tnumplayers. GetCount)

Dim dpmsg As DirectPlayMessage

Dim pID As Long

Dim msgtype As Long

Dim x As Byte

Set dpmsg = dxplay. CreateMessage

dpmsg. WriteLong (MSG_STARTGAME) case selector

dpmsg. WriteByte (numplayers) number of players

Dim PlayerID As Long

For x = 0 To numplayers - 1

PlayerID = tnumplayers. GetDPID (x + 1)

dpmsg. WriteLong (PlayerID)

Keep local copy of player IDs

PlayerIDs (x) = PlayerID

Assign place in order to the host

If PlayerID = MyPlayer Then dxMyTurn = x

Next x

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, dpmsg)

Hide

MainBoard. Enabled = True

MainBoard. Show

MainBoard. playerdisplaylabel. Caption = opponentsname & " Has Joined The Game"

MainBoard. StatusBar1. SimpleText = opponentsname & "Is Ready To Play, Start Game"

MainBoard. mnudisconnect. Enabled = True

connectionmade = True

multiplayermode = True

MainBoard. mnuchat. Enabled = True

onconnect = True

Exit Sub

CouldNotStart:

MsgBox "Could not start game. ", vbOKOnly, "System"

End Sub

Private Function updatedisplay ()

label7. Visible = True

gameopen. FontUnderline = False

gameopen. ForeColor = vbBlue

host. Enabled = False

join. Enabled = False

Dim Y As Byte

Y = 0

For Y = 0 To 2 Step 1

lantype (Y). Enabled = False

Next Y

End Function

Option Explicit

Dim a (9) As Integer

Dim Player_A (9) As Integer Initialize X array

Dim Computer_A (9) As Integer Initialize O array

Dim Test_Result (8) As Integer

Dim Win (3) As Integer Spots won to marked

Dim m, Token, first_turn, temp1 As Integer

Dim Temp As Boolean check whether player won

Dim Sq_Left, n1, mark As Integer

Dim tr As String string passed on win to mark routine

Dim Begin As Boolean continue winning spots flashing

Dim sw As Boolean Sets whether X or O starts game

Public Sub Initialize ()

select whos turn

If usermode = "host" And multiplayermode = True Then

set o or x first

If sw = True Then

MyTurn = True

Else

MyTurn = False

End If

End If

If multiplayermode = False Then

MyTurn = True

End If

Begin = False cancel marking routine

score = score + 1 adds one to gamecount

If multiplayermode = True Then

If usermode = "client" And sw = True Then

MyTurn = False

ElseIf usermode = "client" And sw = False Then

MyTurn = True

End If

End If

Start SW true mode**********************************

initialize game settings

If sw = True Then

StatusBar1. SimpleText = "New Game Initialized" & " Xs Turn"

Debug. Print "Turn Status " & MyTurn

Debug. Print "SW Value is " & sw

Dim u As Integer

u = 0

Sq_Left = 9

Token = 10

For u = 0 To 8

Layer_A (u). MousePointer = vbCustom

select starting icon and characteristics****************************

If usermode = "host" Then

Layer_A (u). MouseIcon = LoadResPicture ("x", vbResIcon)

Else

Layer_A (u). MouseIcon = LoadResPicture ("nyt", vbResIcon)

End If

Layer_A (u). FontSize = 28

Layer_A (u). FontBold = True

Layer_A (u). Caption = ""

Layer_A (u). BackStyle = 0

Layer_A (u). Alignment = 2

Player_A (u) = 0

Computer_A (u) = 0

Layer_A (u). Enabled = True

Next u

update statusbar and display routine******************************

If usermode = "host" And multiplayermode = True Then

StatusBar1. SimpleText = "New Game Initialized " & profilename & "s Turn"

Out_Box. Caption = profilename & "s Turn."

End If

If usermode = "client" And multiplayermode = True Then

StatusBar1. SimpleText = "New Game Initialized " & opponentsname & "s Turn"

Out_Box. Caption = opponentsname & "s Turn."

End If

If multiplayermode = False Then

Out_Box. Caption = "X Goes First"

End If

End If

End sw true*********************************************

set starting icon*****************

If sw = False Then

StatusBar1. SimpleText = "New Game Initialized" & " Os Turn"

Debug. Print "Turn Status " & MyTurn

Debug. Print "SW Value is " & sw

u = 0

Sq_Left = 9

Token = 10

For u = 0 To 8

Layer_A (u). MousePointer = vbCustom

If usermode = "host" And multiplayermode = True Then

Layer_A (u). MouseIcon = LoadResPicture ("nyt", vbResIcon)

Else

Layer_A (u). MouseIcon = LoadResPicture ("o", vbResIcon)

End If

Layer_A (u). FontSize = 28

Layer_A (u). FontBold = True

Layer_A (u). Caption = ""

Layer_A (u). BackStyle = 0

Layer_A (u). Alignment = 2

Player_A (u) = 0

Computer_A (u) = 0

Layer_A (u). Enabled = True

Next u

Temp = False initiate no win

Update Statusbar and outbox display********************8

If usermode = "client" And multiplayermode = True Then

StatusBar1. SimpleText = "New Game Initialized " & profilename & "s Turn"

Out_Box. Caption = profilename & " s Turn."

End If

If usermode = "host" And multiplayermode = True Then

StatusBar1. SimpleText = "New Game Initialized " & opponentsname & "s Turn"

Out_Box. Caption = opponentsname & " s Turn."

End If

If multiplayermode = False Then

Out_Box. Caption = "O Goes First"

End If

End If

End sw false*********************************************

Debug. Print "Ran Initialization Myturn status is " & MyTurn

Game_Over. Caption = "New Game"

End Sub

Private Sub exit_Click ()

If onconnect = True Then checks for connection

On Error GoTo NoDx error to handle dxplay not initialized

Dim dpmsg As DirectPlayMessage

Set dpmsg = dxplay. CreateMessage

Call dpmsg. WriteLong (MSG_STOP) Sends player quit message to other player

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, dpmsg)

Call CloseDownDPlay shuts down dxplay

End If

Unload Connect unloads connect form if connect frees memory

Unload MainBoard unloads board before ending to free memory

End

NoDx:

MsgBox "Could not stop DXPlay. ", vbOKOnly, "System"

End

End Sub

Private Sub Form_Load ()

On Error GoTo NoLoad Handles errors in case form wont load

MainBoard. Icon = LoadResPicture ("ictac", vbResIcon) form icon

restart. Visible = False restart button not seen on single player or client mode

mnudisconnect. Enabled = False set menu item to no connect state

onconnect = False Sets connection status to false by default

sw = True set starting Player to x

x. Checked = True set menuitem X to x checked

multiplayermode = False initiate mode to false

Call deinitialize disables all squares until gamemode and multiplayer mode is decided

score = 0 sets game count to 0

Exit Sub

NoLoad:

MsgBox "Could Not Load Form", vbOKOnly, "Quitting"

End

End Sub

Private Sub deinitialize ()

Disables all squares until game selection is made

Dim m As Integer

For m = 0 To 8

Layer_A (m). MousePointer = vbCustom

If sw = True Then sets mouse pointer to x for x first

Layer_A (m). MouseIcon = LoadResPicture ("x", vbResIcon)

Else sets mouse pointer to O for O first

Layer_A (m). MouseIcon = LoadResPicture ("o", vbResIcon)

End If

Layer_A (m). FontSize = 28

Layer_A (m). FontBold = True

Layer_A (m). Caption = ""

Layer_A (m). BackStyle = 0

Layer_A (m). Alignment = 2

Layer_A (m). Enabled = False

Next m

Update Status Bar

StatusBar1. SimpleText = "Select Game - New Game or Multiplayer option to start game"

Out_Box. Caption = "Start New Game."

End Sub

Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer)

If onconnect = True Then

On Error GoTo NoDx

Dim dpmsg As DirectPlayMessage

Set dpmsg = dxplay. CreateMessage

Call dpmsg. WriteLong (MSG_STOP)

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, dpmsg)

Call CloseDownDPlay

End If

Unload Connect

Unload MainBoard

End

NoDx:

MsgBox "Could not stop DXPlay. ", vbOKOnly, "System"

End

End Sub

Private Sub hostagame_Click ()

usermode = "host" Sets usermode to host

Connect. Show starts connect form

MainBoard. Enabled = False disable form so user cannot select while connect form is up

hostagame. Enabled = False disables menu host button.

joinagame. Enabled = False disables menu join button

multiplayermode = True sets multiplayer to true

End Sub

Private Sub joinagame_Click ()

usermode = "client" Sets usermode to client

Connect. Show

MainBoard. Enabled = False

multiplayermode = True

End Sub

Private Sub Layer_A_Click (Index As Integer)

playerdisplaylabel. Caption = ""

Used For single player board selection or multiplayer your turn selection

Debug. Print "Layer A Click Turn Status " & MyTurn

Debug. Print "Layer A Multiplayer Mode Status " & multiplayermode

If multiplayermode = True And MyTurn = False Then Easy way to exit if not your turn

Exit Sub

End If

If Sq_Left Mod 2 = 1 Then check remainder of squares left divided by 2

If sw = True Then sets who goes first X or O

Layer_A (Index). Caption = "X"

Else

Layer_A (Index). Caption = "O"

End If

Layer_A (Index). Enabled = False Sets selected square to not available

Player_A (Index) = 1

Computer_A (Index) = - Token

LoadPlayer

If multiplayermode = True And MyTurn = True Then checks for multiplayer and turn status

This routine below packs message to send

to other player to select the square chosen.

Dim dpmsg As DirectPlayMessage alot direct playmessage

Set dpmsg = dxplay. CreateMessage set and create the message

Call dpmsg. WriteLong (MSG_MOVE) pack message structure and identify type

Call dpmsg. WriteByte (Index) Packs case selection number to msgtype.

This sends the pack message structure

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, dpmsg)

End If

If multiplayermode = True Then Sets routines to not your turn on multiplayer

Dim Y As Integer

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("nyt", vbResIcon)

Next Y

Update Status displays

StatusBar1. SimpleText = "Game count is " & score & " " & opponentsname & ": " & opponentsscore & " | " & profilename & ": " & profilenamescore & " " & opponentsname & "s Turn"

Out_Box. Caption = opponentsname & "s Turn."

End If

Everything below until mod else statement is single player

If multiplayermode = False Then Sets X or O turn status on single player

If sw = True Then

StatusBar1. SimpleText = "New Game Initialized Os Turn"

Else

StatusBar1. SimpleText = "New Game Initialized Xs Turn"

End If

If sw = True Then

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("o", vbResIcon)

Next Y

Else

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("x", vbResIcon)

Next Y

End If

If sw = True Then

Out_Box. Caption = "Os Turn"

Else

Out_Box. Caption = "Xs Turn"

End If

End If

Else

Mod else*********************************

If sw = True Then

Layer_A (Index). Caption = "O"

Else

Layer_A (Index). Caption = "X"

End If

Layer_A (Index). Enabled = False

Player_A (Index) = - Token

Computer_A (Index) = 1

If multiplayermode = True Then

StatusBar1. SimpleText = "Game count is " & score & " " & opponentsname & ": " & opponentsscore & " | " & profilename & ": " & profilenamescore & " " & opponentsname & "s Turn"

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("nyt", vbResIcon)

Next Y

Out_Box. Caption = opponentsname & "s Turn."

End If

If multiplayermode = False Then

If sw = True Then

StatusBar1. SimpleText = "New Game Initialized Xs Turn"

Else

StatusBar1. SimpleText = "New Game Initialized Os Turn"

End If

If sw = True Then

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("x", vbResIcon)

Next Y

Out_Box. Caption = "Xs Turn"

Else

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("o", vbResIcon)

Next Y

Out_Box. Caption = "Os Turn"

End If

End If

LoadComputer

If multiplayermode = True And MyTurn = True Then

Same as above packs message and sends move to other player

Dim dpmsg2 As DirectPlayMessage

Set dpmsg2 = dxplay. CreateMessage

Call dpmsg2. WriteLong (MSG_MOVE)

Call dpmsg2. WriteByte (Index)

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, dpmsg2)

End If

End If

Sq_Left = Sq_Left - 1

EvalNextMove

MyTurn = False

End Sub

Public Function layer_A_online (Index As Integer)

playerdisplaylabel. Caption = ""

This routine is called to mark sqares when remote computer

sends a move made command.

Same as above with some redundant routines removed

If Sq_Left Mod 2 = 1 Then

If sw = True Then

Layer_A (Index). Caption = "X"

Else

Layer_A (Index). Caption = "O"

End If

Layer_A (Index). Enabled = False

Player_A (Index) = 1

Computer_A (Index) = - Token

If multiplayermode = True Then

If sw = True Then

StatusBar1. SimpleText = "Game count is " & score & " " & opponentsname & ": " & opponentsscore & " | " & profilename & ": " & profilenamescore & " " & profilename & "s Turn"

Out_Box. Caption = profilename & "s Turn."

Dim Y As Integer

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("o", vbResIcon)

Next Y

Else

StatusBar1. SimpleText = "Game count is " & score & " " & opponentsname & ": " & opponentsscore & " | " & profilename & ": " & profilenamescore & " " & profilename & "s Turn"

Out_Box. Caption = profilename & "s Turn."

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("x", vbResIcon)

Next Y

End If

End If

If multiplayermode = False Then

If sw = True Then

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("o", vbResIcon)

Out_Box. Caption = "Os Turn"

Next Y

Else

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("x", vbResIcon)

Out_Box. Caption = "Xs Turn"

Next Y

End If

End If

LoadPlayer

Else

If sw = True Then

Layer_A (Index). Caption = "O"

Else

Layer_A (Index). Caption = "X"

End If

Layer_A (Index). Enabled = False

Player_A (Index) = - Token

Computer_A (Index) = 1

If multiplayermode = True Then

If sw = True Then

StatusBar1. SimpleText = "Game count is " & score & " " & opponentsname & ": " & opponentsscore & " | " & profilename & ": " & profilenamescore & " " & profilename & "s Turn"

Out_Box. Caption = profilename & "s Turn."

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("x", vbResIcon)

Next Y

Else

StatusBar1. SimpleText = "Game count is " & score & " " & opponentsname & ": " & opponentsscore & " | " & profilename & ": " & profilenamescore & " " & profilename & "s Turn"

Out_Box. Caption = profilename & "s Turn."

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("o", vbResIcon)

Next Y

End If

End If

If multiplayermode = False Then

If sw = True Then

StatusBar1. SimpleText = "New Game Initialized Xs Turn"

Else

StatusBar1. SimpleText = "New Game Initialized Os Turn"

End If

If sw = True Then

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("x", vbResIcon)

Next Y

Out_Box. Caption = "Xs Turn"

Else

Y = 0

For Y = 0 To 8

Layer_A (Y). MouseIcon = LoadResPicture ("o", vbResIcon)

Next Y

Out_Box. Caption = "Os Turn"

End If

End If

LoadComputer

End If

Sq_Left = Sq_Left - 1

EvalNextMove

End Function

Private Sub scan_3 () *****************************************

Dim r As Integer

For r = 0 To 7

If Test_Result (r) = 3 Then

Temp = True

End If

Next r

End Sub

Private Sub EvalNextMove () ***********************************

test

scan_3

Debug. Print "Squares Left Value on Evaluate Next Move " & Sq_Left

Debug. Print "Boolean Temp Value on Evaluate " & Temp

Debug. Print "Token Value on Eval." & Token

If Temp = True Then

If Sq_Left Mod 2 = 0 Then Makes win or lose calls Turn checking is made later

Player_Wins call player wins routine

Else

Computer_Wins calls computer rountine

End If

End If

Temp = False

If Sq_Left <= 0 Then

Cats_Game

Begin = False Turns off mark routine

If multiplayermode = True And usermode = "host" Then sets turn to true

MyTurn = True

Debug. Print "Set myturn to true on win"

End If

End If

first_turn = 1

End Sub

Private Sub Computer_Wins ()

Dim s As Integer

For s = 0 To 8

Layer_A (s). Enabled = False

Next s

Begin = True

If multiplayermode = True And usermode = "host" Then

If sw = True Then Checks for Whos Turn and update Host or client

Out_Box. Caption = opponentsname & " Won!"

opponentsscore = opponentsscore + 1

Else

Out_Box. Caption = profilename & " Won!"

profilenamescore = profilenamescore + 1

End If

End If

If multiplayermode = True And usermode = "client" Then

If sw = True Then

Out_Box. Caption = profilename & " Won!"

profilenamescore = profilenamescore + 1

Else

Out_Box. Caption = opponentsname & " Won!"

opponentsscore = opponentsscore + 1

End If

End If

If multiplayermode = False Then Single Player updating

If sw = True Then

Out_Box. Caption = "O Won!!!!"

Else

Out_Box. Caption = "X Won!!!!!"

End If

End If

Game_Over. Caption = "Game Over"

Shows Resart Option if Host

If multiplayermode = True And usermode = "host" Then

restart. Visible = True

restart. Enabled = True

End If

Timer4. Enabled = True Sets timer to time mark routine

If sw = True Then Checks Whos turn sends string to mark

Call Mark_Win ("O")

Else

Call Mark_Win ("X")

End If

End Sub

Private Sub Player_Wins ()

See computer wins for details

Dim a As Integer

For a = 0 To 8

Layer_A (a). Enabled = False

Next a

Begin = True

If multiplayermode = True And usermode = "host" Then

If sw = True Then

profilenamescore = profilenamescore + 1

Out_Box. Caption = profilename & " Won!"

Else

opponentsscore = opponentsscore + 1

Out_Box. Caption = opponentsname & " Won!"

End If

End If

If multiplayermode = True And usermode = "client" Then

If sw = True Then

opponentsscore = opponentsscore + 1

Out_Box. Caption = opponentsname & " Won!"

Else

profilenamescore = profilenamescore + 1

Out_Box. Caption = profilename & " Won!"

End If

End If

If multiplayermode = False Then

If sw = True Then

Out_Box. Caption = "X Won!!!!"

Else

Out_Box. Caption = "O Won!!!!!"

End If

End If

Game_Over. Caption = "Game Over"

If multiplayermode = True And usermode = "host" Then

restart. Visible = True

restart. Enabled = True

End If

Timer4. Enabled = True

If sw = True Then

Call Mark_Win ("X")

Else

Call Mark_Win ("O")

End If

End Sub

Private Sub Mark_Win (tr As String) Marks winning squares

Dim PauseTime, start, Finish, TotalTime

While Begin = True

PauseTime = 0.3 Set duration.

start = Timer Set start time.

Do While Timer < start + PauseTime And Begin = True

For n1 = 0 To 2

mark = Win (n1)

Layer_A (mark). Caption = tr

Layer_A (mark). FontBold = False

Next n1

DoEvents Yield to other processes.

Loop

start = Timer Set start time.

Do While Timer < start + PauseTime And Begin = True

For n1 = 0 To 2

mark = Win (n1)

Layer_A (mark). FontBold = True

Layer_A (mark). Caption = tr

Next n1

DoEvents Yield to other processes.

Loop

Wend

End Sub

Private Sub test () Tests conditions for the win

Dim n, k, sample As Integer

sample = 0

For n = 0 To 2

Test_Result (sample) = a (3 * n) + a (3 * n + 1) + a (3 * n + 2)

If Test_Result (sample) = 3 Then

Win (0) = 3 * n

Win (1) = 3 * n + 1

Win (2) = 3 * n + 2

End If

sample = sample + 1

Next n

For n = 0 To 2

Test_Result (sample) = a (n) + a (n + 3) + a (n + 6)

If Test_Result (sample) = 3 Then

Win (0) = n

Win (1) = n + 3

Win (2) = n + 6

End If

sample = sample + 1

Next n

Test_Result (sample) = a (0) + a (4) + a (8)

If Test_Result (sample) = 3 Then

Win (0) = 0

Win (1) = 4

Win (2) = 8

End If

sample = sample + 1

Test_Result (sample) = a (6) + a (4) + a (2)

If Test_Result (sample) = 3 Then

Win (0) = 6

Win (1) = 4

Win (2) = 2

End If

sample = sample + 1

End Sub

Private Sub LoadPlayer ()

Dim e As Integer

For e = 0 To 8

a (e) = Player_A (e)

Next e

End Sub

Private Sub LoadComputer ()

Dim w As Integer

For w = 0 To 8

a (w) = Computer_A (w)

Next w

End Sub

Private Sub Cats_Game () Cats Game display routine

GameUnderway = False

Dim z As Integer

For z = 0 To 8

Layer_A (z). Enabled = False

Next z

Out_Box. Caption = "Cats Game!"

Game_Over. Caption = "Game Over"

If multiplayermode = True And usermode = "host" Then

restart. Visible = True

restart. Enabled = True

End If

End Sub

Private Sub mnuchat_Click () Menu button for chatbox routine

On Error GoTo NoChat error handler in case chat initialization problem.

If mnuchat. Checked = True Then

Frame1. Visible = False

chatlabel. Visible = False

send_chat. Visible = False

chatbox. Visible = False

mnuchat. Checked = False

Packs and sends DXplay message to switch chat on off

Dim chaton As DirectPlayMessage

Set chaton = dxplay. CreateMessage

Call chaton. WriteLong (MSG_CHAT_ON)

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, chaton)

Else

Frame1. Visible = True

chatlabel. Visible = True

send_chat. Visible = True

chatbox. Visible = True

mnuchat. Checked = True

chatbox. Visible = True

chatbox. SetFocus

Packs and sends DXplay message to switch chat on off

Dim chaton2 As DirectPlayMessage

Set chaton2 = dxplay. CreateMessage

Call chaton2. WriteLong (MSG_CHAT_ON)

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, chaton2)

End If

Exit Sub

NoChat:

MsgBox "Could Not Start Chat", vbOKOnly, "Oops"

Exit Sub

End Sub

Public Function chatswitch () Menu button for incoming online Chatbox routine

On Error GoTo NoChat

If mnuchat. Checked = True Then

Frame1. Visible = False

chatlabel. Visible = False

send_chat. Visible = False

chatbox. Visible = False

mnuchat. Checked = False

Else

Frame1. Visible = True

chatlabel. Visible = True

send_chat. Visible = True

chatbox. Visible = True

mnuchat. Checked = True

chatbox. Visible = True

chatbox. SetFocus

End If

Exit Function

NoChat:

MsgBox "Could Not Start Chat", vbOKOnly, "Oops"

Exit Function

End Function

Private Sub mnudisconnect_Click () Disconnects and sends disconnect message

mnudisconnect. Enabled = False

newgame. Enabled = True

hostagame. Enabled = True

joinagame. Enabled = True

multiplayermode = False

usermode = "host"

Sends player has left message to other players

Dim dpmsg As DirectPlayMessage

Set dpmsg = dxplay. CreateMessage

Call dpmsg. WriteLong (MSG_STOP)

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, dpmsg)

Call CloseDownDPlay

Unload Connect

onconnect = False

End Sub

Private Sub newgame_Click () starts new game single or multiplayer

On Error GoTo NoGame

If usermode = "client" And multiplayermode = True Then

MsgBox "Only the host can restart the game. ", vbOKOnly, "Tic Tac Oops"

Exit Sub

End If

If multiplayermode = False Then

usermode = "host"

Call Initialize

Else

Call restart_Click call restart routine for multiplayer

End If

Exit Sub

NoGame:

MsgBox "Could Not Start Game. ", vbOKOnly, "Oops"

Exit Sub

End Sub

Public Sub o_Click () sets menu item whos first o

If GameUnderway = True Then

MsgBox "You cannot chang this option while a game is in play", vbOKOnly, "Tic Tac Oops"

Exit Sub

End If

If o. Checked = True Then

sw = False

Exit Sub

Else

o. Checked = True

x. Checked = False

sw = False

End If

If multiplayermode = True Then

Sends who goes first message.

Dim dpmsg As DirectPlayMessage

Set dpmsg = dxplay. CreateMessage

Call dpmsg. WriteLong (MSG_XORO)

Call dpmsg. WriteByte (2)

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, _

dpmsg)

End If

Debug. Print "menu X or O clicked sw is " & sw

End Sub

Public Sub restart_Click () Restarts Game and updates scores

GameUnderway = True

multiplayermode = True

If usermode = "host" Then

Dim dpmsg As DirectPlayMessage

Set dpmsg = dxplay. CreateMessage

Call dpmsg. WriteLong (MSG_RESTART)

Call dxplay. Send (MyPlayer, DPID_ALLPLAYERS, DPSEND_GUARANTEED, _

dpmsg)

End If

Call Initialize

If usermode = "host" Then

If sw = True Then

MyTurn = True

StatusBar1. SimpleText = "Game count is " & score & " " & opponentsname & ": " & opponentsscore & " | " & profilename & ": " & profilenamescore & " " & profilename & "s Turn"

playerdisplaylabel. Caption = profilename & "s Turn."

Else

MyTurn = False

StatusBar1. SimpleText = "Game count is " & score & " " & opponentsname & ": " & opponentsscore & " | " & profilename & ": " & profilenamescore & " " & opponentsname & "s Turn"

playerdisplaylabel. Caption = opponentsname & "s Turn."

End If

End If

If usermode = "client" Then

If sw = True Then

MyTurn = False

StatusBar1. SimpleText = "Game count is " & score & " " & opponentsname & ": " & opponentsscore & " | " & ...........



Страницы: [1] | 2 |









 
Показывать только:
Портфель:
Выбранных работ  



Рубрики по алфавиту:
А Б В Г Д Е Ж З
И Й К Л М Н О П
Р С Т У Ф Х Ц Ч
Ш Щ Ъ Ы Ь Э Ю Я

 

 

Ключевые слова страницы: Greating game on visual basic with multiplayer system | лабораторная работа

СтудентБанк.ру © 2017 - Банк рефератов, база студенческих работ, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам, а также отчеты по практике и многое другое - бесплатно.
Лучшие лицензионные казино с выводом денег