Welcome to SolFX!
If you've got .NET 2.0 and the Nov. '04 Avalon CTP,
click here to play my
scaling, vector-based, WinFX version of Solitaire. You can also explore the
implementation using the source in this archive. Enjoy!
Features
- Cards scale in a lovely way (thanks to
Peter Stern for the hand-drawn vector card fronts and
MSDN's own Chris Mowrer for the vector card back!)
- Cards shown as you drag 'n' drop
- Cards "stack" appropriately based on the card pile
- Uses data binding to a UI-independent solitaire engine (thanks James Kovacs!)
- Hooks into layout system to provide custom sizing, but the rest is pure vanilla ListBox
- ClickOnce deployment, update and shell integration activated via the web
- Vegas-style cumulative scoring
- Partial implementation write-up available (with more to come):
- A Journey of A Thousand Miles, February, 2004
- Another Step Down the Longhorn Road, April, 2004
- Crazy About Avalon Data Binding, July, 2004
- Still Crazy After All These Bindings, August, 2004
- Still More Avalon Data Binding Craziness, October, 2004
Bugs
- No right-click or Ctrl+A support
- No deck or scoring options
- No undo support
- Card stacking doesn't work well with Peter's cards
- Requires FullTrust due to a temporary limitation in Avalon itself (no support for partial trust
yet)
- Ugly "New Game" button that also manages to screw up layout if the window size decreases far enough
- Unknown hairline border around every pile
- No fun end game animation
History
- 1/27/04: Much improved performance with the use of DrawingBrushes and a simplifed
card back
- 1/6/04: First real version released to the web
Contact
Feel free to contact Chris Sells
with comments or bug fixes. The official home of this utility is
http://www.sellsbrothers.com/fun/solfx.
Copyright
Copyright © 2005 Chris Sells. All rights reserved. THIS CODE AND INFORMATION
IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND/OR
FITNESS FOR A PARTICULAR PURPOSE.