Click here to Skip to main content
Licence CPOL
First Posted 9 Aug 2006
Views 24,434
Bookmarked 18 times

HexCell - a game to demonstrate boolean flag operations

By | 9 Aug 2006 | Article
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.

<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:

''' <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)

About the Author

Duncan Edwards Jones

Software Developer (Senior)
JP Morgan
Ireland Ireland

Member

Follow on Twitter Follow on Twitter
C# / SQL Server developer
Microsoft MVP 2006, 2007
Visual Basic .NET

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralToo easy PinmemberDuncan Edwards Jones2:41 11 Aug '06  

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

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

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120517.1 | Last Updated 10 Aug 2006
Article Copyright 2006 by Duncan Edwards Jones
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid