⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controller.m

📁 Gomoku是一个在GNUstep上的扩展TicTacToe游戏。如果你能连5个无论是横、竖、斜你就可以赢。反之
💻 M
字号:
/* *  Controller.m: Controller Object of Gomoku.app * *  Copyright (c) 2000 Nicola Pero <n.pero@mi.flashnet.it> *   *  Author: Nicola Pero *  Date: April, September 2000 * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "Controller.h"#include "Board.h"@interface DifficultyPanel : NSPanel{  MainBoard *board;}- (id) initWithBoard: (MainBoard *)b;- (void) changeLevel: (id)sender;@end@implementation DifficultyPanel- (id) initWithBoard: (MainBoard *)b{  NSBox *box;  NSBox *box_b;  NSMatrix *matrix;  NSButtonCell *cell;  NSRect winFrame;  int level;  board = b;  cell = [[NSButtonCell alloc] init];  [cell setButtonType: NSRadioButton];  [cell setBordered: NO];  [cell setImagePosition: NSImageLeft];     matrix = [[NSMatrix alloc] initWithFrame: NSZeroRect				 mode: NSRadioModeMatrix				 prototype: cell				 numberOfRows: 6				 numberOfColumns: 1];       [matrix setIntercellSpacing: NSMakeSize (0, 4) ];  [matrix setTarget: self];  [matrix setAutosizesCells: NO];  [matrix setTarget: self];  [matrix setAction: @selector(changeLevel:)];    cell = [matrix cellAtRow: 0 column: 0];  [cell setTitle: _(@"Level 0 (Trivial)")];  [cell setTag: 0];  cell = [matrix cellAtRow: 1 column: 0];  [cell setTitle: _(@"Level 1 (Beginner)")];  [cell setTag: 1];  cell = [matrix cellAtRow: 2 column: 0];  [cell setTitle: _(@"Level 2 (Easy)")];  [cell setTag: 2];  cell = [matrix cellAtRow: 3 column: 0];  [cell setTitle: _(@"Level 3 (Medium)")];  [cell setTag: 3];  cell = [matrix cellAtRow: 4 column: 0];  [cell setTitle: _(@"Level 4 (Advanced)")];  [cell setTag: 4];  cell = [matrix cellAtRow: 5 column: 0];  [cell setTitle: _(@"Level 5 (Difficult)")];  [cell setTag: 5];  [matrix selectCellWithTag: [board difficultyLevel]];    [matrix sizeToFit];    box = [NSBox new];  [box setTitle: _(@"Choose Difficulty Level:")];  [box setTitlePosition: NSAtTop];  [box setBorderType: NSGrooveBorder];  [box addSubview: matrix];  RELEASE (matrix);  [box sizeToFit];  [box setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)];  box_b = [NSBox new];  [box_b setTitlePosition: NSNoTitle];  [box_b setBorderType: NSNoBorder];  [box_b addSubview: box];  RELEASE (box);  [box_b sizeToFit];  [box_b setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)];  winFrame.size = [box_b frame].size;  winFrame.origin = NSMakePoint (100, 100);  // Now we can make the window of the exact size   self = [[isa alloc] initWithContentRect: winFrame		     styleMask: (NSTitledWindowMask 				 | NSClosableWindowMask 				 | NSMiniaturizableWindowMask)		      backing: NSBackingStoreBuffered		      defer: YES];  [self setTitle: _(@"Difficulty level Panel")];  [self setReleasedWhenClosed: NO];  [self setContentView: box_b];  RELEASE (box_b);  [self changeLevel: matrix];  return self;}- (void) changeLevel: (id)sender{  int level = [[sender selectedCell] tag];    [board setDifficultyLevel: level];    [[NSUserDefaults standardUserDefaults] setInteger: level 					 forKey: @"DifficultyLevel"];  [[NSUserDefaults standardUserDefaults] synchronize];}@end@implementation Controller+ new: (int) cnt{    return [[self alloc] init: cnt];}- init: (int) cnt{  NSMatrix *matrix;  NSRect winFrame;  NSImageCell *cell;  int level;    cell = [[NSCell alloc] init];  AUTORELEASE (cell);  [cell setBordered: NO];  [cell setBezeled: NO];  [cell setEditable: NO];  [cell setSelectable: NO];  [cell setImage: [NSImage imageNamed: @"Empty"]];  matrix = [[NSMatrix alloc] initWithFrame: NSZeroRect			     mode: NSTrackModeMatrix 			     prototype: cell			     numberOfRows: cnt 			     numberOfColumns: cnt];  AUTORELEASE (matrix);  [matrix setIntercellSpacing: NSMakeSize (0, 0)];  [matrix setAutoresizingMask: NSViewNotSizable];  [matrix sizeToFit];  winFrame.size = [matrix frame].size;  winFrame.origin = NSMakePoint (100, 100);  self = [super initWithContentRect: winFrame		styleMask: (NSTitledWindowMask | NSClosableWindowMask 			    | NSMiniaturizableWindowMask)		backing: NSBackingStoreBuffered		defer: YES];  [self setTitle: _(@"Gomoku Game")];  [self setReleasedWhenClosed: NO];  [self setContentView: matrix];  board = [[MainBoard alloc] initWithMatrix: matrix];  [matrix setTarget: self];  [matrix setAction: @selector (userMove:)];  level = [[NSUserDefaults standardUserDefaults] 	    integerForKey: @"DifficultyLevel"];  if (level >= 0 && level <= 5)    {      [board setDifficultyLevel: level];    }    return self;}-(void) dealloc{  TEST_RELEASE (diffPanel);  RELEASE (board);  [super dealloc];}- (void) applicationDidFinishLaunching: (NSNotification *)aNotification;{  [self center];  [self orderFront: self];}- (void) runDifficultyLevelPanel: (id) sender{  if (diffPanel == nil)    {      diffPanel = [[DifficultyPanel alloc] initWithBoard: board];    }    [diffPanel orderFront: self];}- (void) newGame: (id) sender{  [self orderFront: self];  [board newGame];}- (void) userMove: (id) sender{  if ([sender isKindOfClass: [NSMatrix class]])    {      [board userMoveInRow: [(NSMatrix *)sender selectedRow]	     column: [(NSMatrix *)sender selectedColumn]];    }}@end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -