Click here to Skip to main content
15,891,253 members
Articles / Programming Languages / Visual Basic
Article

HexCell - a game to demonstrate boolean flag operations

Rate me:
Please Sign up or sign in to vote.
3.00/5 (7 votes)
9 Aug 2006CPOL 35.1K   169   19   1
A game (based on Soduku) to demonstrate boolean flag setting.

Sample Image - Screenshot.jpg

Warning - can waste a lot of grey matter!

Introduction

The rules of the game will be immediately obvious to anyone who has done Soduku. Basically, the grid is divided into 16 quadrants, and each row, column, and quadrant must contain one and only one of each of the 16 possible colours.

You can select or unselect colours from the 16 possibilities for the current cell using the left mouse button. If you know that a given cell can only contain one colour, there is a right-mouse shortcut menu to select a colour. Also, there is an option on that menu to clear a cell back to all 16 possibilities if (when) you get it wrong.

Grids can be saved and loaded to an XML file (with the extension .xhx) and there is one example included.

This program demonstrates using flag values (integers defined as powers of two) to set or unset bits in a 32 bit integer.

VB
<Flags()> _
Public Enum CellPossibleValues
    CellValue_0 = &H1
    CellValue_1 = &H2
    CellValue_2 = &H4
    CellValue_3 = &H8
    CellValue_4 = &H10
    CellValue_5 = &H20
    CellValue_6 = &H40
    CellValue_7 = &H80
    CellValue_8 = &H100
    CellValue_9 = &H200
    CellValue_A = &H400
    CellValue_B = &H800
    CellValue_C = &H1000
    CellValue_D = &H2000
    CellValue_E = &H4000
    CellValue_F = &H8000
End Enum

These values are then added to or removed from the cell's possible values, using boolean operations:

VB
''' <summary>
''' Adds the value to the possible values for this cell
''' </summary>
''' <PARAM name="value"></PARAM>
''' <remarks></remarks>
Public Sub SetValue(ByVal value As CellPossibleValues)
    CellValue = _CellValue Or value
End Sub

''' <summary>
''' Removes the value from the possible
''' colour values held by this hex cell
''' </summary>
''' <PARAM name="Value"></PARAM>
''' <remarks></remarks>
Public Sub UnsetValue(ByVal Value As CellPossibleValues)
    CellValue = _CellValue And (&HFFFF - Value)
End Sub

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
Ireland Ireland
C# / SQL Server developer
Microsoft MVP (Azure) 2017
Microsoft MVP (Visual Basic) 2006, 2007

Comments and Discussions

 
GeneralToo easy Pin
Duncan Edwards Jones11-Aug-06 2:41
professionalDuncan Edwards Jones11-Aug-06 2:41 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.