òÅÐÏÚÉÔÏÒÉÊ Sisyphus
ðÏÓÌÅÄÎÅÅ ÏÂÎÏ×ÌÅÎÉÅ: 1 ÏËÔÑÂÒÑ 2023 | ðÁËÅÔÏ×: 18631 | ðÏÓÅÝÅÎÉÊ: 37844469
en ru br
òÅÐÏÚÉÔÏÒÉÉ ALT

çÒÕÐÐÁ :: çÒÁÆÉÞÅÓËÉÅ ÏÂÏÌÏÞËÉ/GNUstep
ðÁËÅÔ: gnustep-gmines

 çÌÁ×ÎÁÑ   éÚÍÅÎÅÎÉÑ   óÐÅË   ðÁÔÞÉ   éÓÈÏÄÎÉËÉ   úÁÇÒÕÚÉÔØ   Gear   Bugs and FR  Repocop 

gnustep-gmines-0.2/000075500000000000000000000000001227734174600143335ustar00rootroot00000000000000gnustep-gmines-0.2/ChangeLog000064400000000000000000000004121227734174600161020ustar00rootroot000000000000002011-06-02 Riccardo Mottola <rm@gnu.org>

* main.m
removed warnings and memory leaks

2011-05-30 Riccardo Mottola <rm@gnu.org>

Imported project with permission of the original author.
Converted the project to be a ProjectCenter project and
fixed minor things.
gnustep-gmines-0.2/Controller.h000064400000000000000000000010341227734174600166250ustar00rootroot00000000000000#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>

#import "Views.h"

@interface Controller : NSObject
{
NSWindow *window;
NSTextField *timeField, *markField;
Square *fields[8][8];

int uncovered;

BOOL atStart;
NSDate *startDate;
}

-(void)applicationDidFinishLaunching:(NSNotification *)aNotification;

- makeGameWindow;

- newGame:(id)sender;

- uncoverRegion:(Square *)item;

- uncoverAll:(Square *)item;

- uncovered:(Square *)item;
- marked:(Square *)item;
- (int)markCount;

- start;
- tick;

@end

gnustep-gmines-0.2/Controller.m000064400000000000000000000151571227734174600166450ustar00rootroot00000000000000
#import <time.h>

#import "Controller.h"

@implementation Controller

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
{
NSInvocation *inv;

inv = [NSInvocation
invocationWithMethodSignature:
[self methodSignatureForSelector:
@selector(tick)]];
[inv setSelector:@selector(tick)];
[inv setTarget:self];
[inv retain];

[NSTimer scheduledTimerWithTimeInterval:1.0
invocation:inv
repeats:YES];

window = nil;

srand48(time(NULL));

[self makeGameWindow];
[self newGame:nil];
}

- makeGameWindow
{
NSRect frame;
NSView *view;
int m = NSTitledWindowMask;
int row, col;
NSBox *boardBox;
NSRect contentRect;

view = [[NSView alloc]
initWithFrame:
NSMakeRect(0, 0, DIMENSION*8, DIMENSION*8)];
for(row=0; row<8; row++){
for(col=0; col<8; col++){
NSPoint spoint =
NSMakePoint(row*DIMENSION, col*DIMENSION);
Square *field =
[[Square alloc] initAtPoint:spoint
row:row col:col controller:self];
[view addSubview:field];
fields[row][col] = field;
}
}

markField =
[[NSTextField alloc]
initWithFrame:
NSMakeRect(0, DIMENSION*8+SEPARATOR,
3*DIMENSION, DIMENSION)];
[markField setEditable:NO];
[markField setSelectable:NO];
[markField setBackgroundColor:[NSColor blackColor]];
[markField setTextColor:[NSColor redColor]];
[view addSubview:markField];


timeField =
[[NSTextField alloc]
initWithFrame:
NSMakeRect(DIMENSION*5, DIMENSION*8+SEPARATOR,
3*DIMENSION, DIMENSION)];
[timeField setEditable:NO];
[timeField setSelectable:NO];
[timeField setBackgroundColor:[NSColor blackColor]];
[timeField setTextColor:[NSColor redColor]];
[view addSubview:timeField];

boardBox =
[[NSBox alloc]
initWithFrame:
NSMakeRect(0, 0, DIMENSION*8, DIMENSION*8)];
[boardBox setContentView:view];
[boardBox setContentViewMargins:NSMakeSize(MARGIN, MARGIN)];
[boardBox setTitle:@"Board"];
[boardBox setBorderType:NSGrooveBorder];
[boardBox sizeToFit];

frame = [NSWindow frameRectForContentRect:[boardBox frame]
styleMask:m];

window = [[NSWindow alloc] initWithContentRect:frame
styleMask:m
backing: NSBackingStoreRetained
defer:NO];
[window setMinSize:frame.size];
[window setTitle:@"Mines"];
[window setDelegate:self];

[window setFrame:frame display:YES];
[window setMaxSize:frame.size];

[window setContentView:boardBox];
[window setReleasedWhenClosed:YES];

// RELEASE(view);

[window center];
[window orderFrontRegardless];
[window makeKeyWindow];
[window display];


return self;
}


- newGame:(id)sender
{
int row, col, mrow, mcol, index;

for(row=0; row<8; row++){
for(col=0; col<8; col++){
[fields[row][col] setDefaults];
}
}

for(index=0; index<10; index++){
do {
mrow = lrand48()%8;
mcol = lrand48()%8;
}
while([fields[mrow][mcol] mine]==YES);
[fields[mrow][mcol] setMine:YES];
}

for(row=0; row<8; row++){
for(col=0; col<8; col++){
int sx, sy, nb;
nb = 0;
for(sx=-1; sx<=1; sx++){
for(sy=-1; sy<=1; sy++){
int cx = row+sx, cy = col+sy;
if(!(sx==0 && sy==0) &&
(0<=cx && cx<8) &&
(0<=cy && cy<8)){
if([fields[cx][cy] mine]==YES){
nb++;
}
}
}
}

if(nb>0){
[fields[row][col] setNeighbors:nb];
}
}
}

[markField setIntValue:10];
[timeField setStringValue:@""];

uncovered = 0;
atStart = YES;

return self;
}


- uncoverRegion:(Square *)item
{
int row, col, sx, sy, cx, cy;

if([item covered]!=COV_COVERED || [item marked]==YES){
return self;
}

[item setCovered:COV_UNCOVERED];
uncovered++;

if([item neighbors]>0){
return self;
}

row = [item row]; col = [item col];
for(sx=-1; sx<=1; sx++){
for(sy=-1; sy<=1; sy++){
cx = row + sx; cy = col + sy;
if(!(sx==0 && sy==0) &&
(0<=cx && cx<8) &&
(0<=cy && cy<8)){
[self uncoverRegion:fields[cx][cy]];
}
}
}

return self;
}

- uncoverAll:(Square *)item
{
int row, col;
for(row=0; row<8; row++){
for(col=0; col<8; col++){
Square *other = fields[row][col];
if(other!=item){
[other setCovered:COV_UNCOVERED];
}
}
}

atStart = YES;

return self;
}

- uncovered:(Square *)item
{
BOOL win;

[self start];

if(![item neighbors] && [item mine]==NO){
[self uncoverRegion:item];
}
else if([item mine]==NO){
uncovered++;
}

win = ((uncovered==(64-10) && ![markField intValue]) ? YES : NO);

if([item mine]==YES || win==YES){
[self uncoverAll:item];
}

if([item mine]==YES){
NSRunAlertPanel(@"Game over.", @"You lose.",
@"Ok", nil, nil);
}
else if(win==YES){
NSRunAlertPanel(@"Congratulations!", @"You win.",
@"Ok", nil, nil);
}

return self;
}

- marked:(Square *)item
{
BOOL win;
int marks = [markField intValue];
[markField setIntValue:marks+([item marked]==YES ? -1 : 1)];

[self start];

win = ((uncovered==(64-10) && ![markField intValue]) ? YES : NO);
if(win==YES){
[self uncoverAll:nil];
NSRunAlertPanel(@"Congratulations!", @"You win.",
@"Ok", nil, nil);
}

return self;
}

- (int)markCount
{
return [markField intValue];
}


- start
{
if(atStart==YES){
startDate = [NSDate date];
[startDate retain];
atStart = NO;
}

return self;
}

- tick
{
if(atStart==NO){
int delta = -[startDate timeIntervalSinceNow];
NSString *timeStr =
[NSString stringWithFormat:@"%06d:%02d",
delta/60, delta%60];
[timeField setStringValue:timeStr];
}

return self;
}

@end


gnustep-gmines-0.2/GMines.pcproj/000075500000000000000000000000001227734174600170115ustar00rootroot00000000000000gnustep-gmines-0.2/GMines.pcproj/PC.project000064400000000000000000000033421227734174600207050ustar00rootroot00000000000000{
APPLICATIONICON = "GMines.tiff";
"APP_DOCUMENT_BASED" = NO;
"APP_TYPE" = GORM;
"BUILDER_TARGETS" = (
all,
install,
uninstall,
clean,
distclean,
dist
);
"CLASS_FILES" = (
"Controller.m",
"Views.m"
);
COMPILEROPTIONS = "";
CPPOPTIONS = "";
"CREATION_DATE" = "2011-05-30 14:34:12 +0200";
"DOCU_FILES" = (
);
FRAMEWORKS = (
);
"HEADER_FILES" = (
"Controller.h",
"Views.h"
);
IMAGES = (
"GMines.tiff"
);
INSTALLDIR = "$(HOME)/GNUstep";
INTERFACES = (
);
LANGUAGE = English;
LIBRARIES = (
"gnustep-base",
"gnustep-gui"
);
LINKEROPTIONS = "";
"LOCALIZED_RESOURCES" = (
);
MAININTERFACE = "";
MAKEFILEDIR = "$(GNUSTEP_MAKEFILES)";
"OBJC_COMPILEROPTIONS" = "";
"OTHER_RESOURCES" = (
);
"OTHER_SOURCES" = (
"main.m"
);
"PRINCIPAL_CLASS" = NSApplication;
"PROJECT_AUTHORS" = (
"Marko Riedel"
);
"PROJECT_COPYRIGHT" = "Copyright (C) 2002-2011 Free Software Foundation, Inc";
"PROJECT_COPYRIGHT_DESC" = "Released under GPL v2";
"PROJECT_CREATOR" = "Riccardo,,,";
"PROJECT_DESCRIPTION" = "GNUstep minesweeper game";
"PROJECT_DOCUMENTTYPES" = (
);
"PROJECT_GROUP" = "No group avaliable!";
"PROJECT_MAINTAINER" = "Riccardo,,,";
"PROJECT_NAME" = GMines;
"PROJECT_RELEASE" = "0.2";
"PROJECT_SUMMARY" = "No summary avaliable!";
"PROJECT_TYPE" = Application;
"PROJECT_URL" = "http://gap.nongnu.org/gmines/";
"SEARCH_HEADER_DIRS" = (
);
"SEARCH_LIB_DIRS" = (
);
SUBPROJECTS = (
);
"SUPPORTING_FILES" = (
"GNUmakefile.preamble",
GNUmakefile,
"GNUmakefile.postamble",
"GMinesInfo.plist"
);
"USER_LANGUAGES" = (
English
);
}gnustep-gmines-0.2/GMinesInfo.plist000064400000000000000000000010001227734174600173750ustar00rootroot00000000000000{
ApplicationDescription = "GNUstep minesweeper game";
ApplicationIcon = "GMines.tiff";
ApplicationName = GMines;
ApplicationRelease = "0.2";
Authors = (
"Marko Riedel"
);
Copyright = "Copyright (C) 2002-2011 Free Software Foundation, Inc";
CopyrightDescription = "Released under GPL v2";
FullVersionID = "0.2";
NSExecutable = GMines;
NSIcon = "GMines.tiff";
NSPrincipalClass = NSApplication;
NSRole = Application;
URL = "http://gap.nongnu.org/gmines/";
}gnustep-gmines-0.2/GNUmakefile000064400000000000000000000015141227734174600164060ustar00rootroot00000000000000#
# GNUmakefile - Generated by ProjectCenter
#
ifeq ($(GNUSTEP_MAKEFILES),)
GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null)
endif
ifeq ($(GNUSTEP_MAKEFILES),)
$(error You need to set GNUSTEP_MAKEFILES before compiling!)
endif

include $(GNUSTEP_MAKEFILES)/common.make

#
# Application
#
VERSION = 0.2
PACKAGE_NAME = GMines
APP_NAME = GMines
GMines_APPLICATION_ICON = GMines.tiff


#
# Resource files
#
GMines_RESOURCE_FILES = \
Resources/GMines.tiff \


#
# Header files
#
GMines_HEADER_FILES = \
Controller.h \
Views.h

#
# Class files
#
GMines_OBJC_FILES = \
Controller.m \
Views.m

#
# Other sources
#
GMines_OBJC_FILES += \
main.m

#
# Makefiles
#
-include GNUmakefile.preamble
include $(GNUSTEP_MAKEFILES)/aggregate.make
include $(GNUSTEP_MAKEFILES)/application.make
-include GNUmakefile.postamble
gnustep-gmines-0.2/GNUmakefile.preamble000064400000000000000000000010701227734174600201710ustar00rootroot00000000000000#
# GNUmakefile.preamble - Generated by ProjectCenter
#

# Additional flags to pass to the preprocessor
ADDITIONAL_CPPFLAGS +=

# Additional flags to pass to Objective C compiler
ADDITIONAL_OBJCFLAGS +=

# Additional flags to pass to C compiler
ADDITIONAL_CFLAGS +=

# Additional flags to pass to the linker
ADDITIONAL_LDFLAGS +=

# Additional include directories the compiler should search
ADDITIONAL_INCLUDE_DIRS +=

# Additional library directories the linker should search
ADDITIONAL_LIB_DIRS +=

# Additional GUI libraries to link
ADDITIONAL_GUI_LIBS +=

gnustep-gmines-0.2/Resources/000075500000000000000000000000001227734174600163055ustar00rootroot00000000000000gnustep-gmines-0.2/Resources/GMines.tiff000064400000000000000000000160561227734174600203510ustar00rootroot00000000000000II*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆpŒˆpŒˆpŒˆpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆpŒˆpŒˆpŒˆpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆpŒˆpŒˆpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆpŒˆpŒˆpŒˆpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆøüøøüøøüøpŒˆpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆøüøøüøøüøøüøpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆøüøøüøøüøpŒˆpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆpŒˆpŒˆpŒˆpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøpŒˆpŒˆpŒˆpŒˆpŒˆøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøøøøøøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøøøøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88À88À88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88øüøøüøøüøøüøÀ88À88øüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88øüøøüøøüøøüøøüøøüøøüøøüøøøøøüøøüøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøøøüøøüøøüøøüøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøüøøøøüøøüøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88øüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88À88À88À88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøÀ88À88À88À88À88À88À88À88øüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøøøøøøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøøøøøøøøøøøøøøøøøøøøøüøÿÿÿøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøøüøþ00ÎJÔ@&(/home/multix/gnustep-cvs/gap/user-apps/Games/GMines/Resources/GMines.tiffHHgnustep-gmines-0.2/Views.h000064400000000000000000000014351227734174600156040ustar00rootroot00000000000000#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>

#define DIMENSION 24

#define SEPARATOR 10
#define MARGIN 6

typedef enum {
COV_COVERED = 0,
COV_UNCOVERED,
COV_UNCOVERED_BY_CLICK
} COV_STATE;

@interface Square : NSView
{
int row, col;

BOOL isMine;
int neighbors;
COV_STATE covered;
BOOL marked;

id con;
}

- initAtPoint:(NSPoint)aPoint row:(int)rval col:(int)cval
controller:(id)theCon;

- (int)row;
- (int)col;

- setDefaults;

- setMine:(BOOL)flag;
- setNeighbors:(int)count;
- setCovered:(COV_STATE)aState;
- setMarked:(BOOL)flag;

- (BOOL)mine;
- (int)neighbors;
- (COV_STATE)covered;
- (BOOL)marked;

- (void)drawRect:(NSRect)aRect;

- (void)mouseDown:(NSEvent *)theEvent;
- (void)rightMouseDown:(NSEvent *)theEvent;

@end

gnustep-gmines-0.2/Views.m000064400000000000000000000104071227734174600156100ustar00rootroot00000000000000
#import "Views.h"
#import "Controller.h"


@implementation Square

- initAtPoint:(NSPoint)aPoint row:(int)rval col:(int)cval
controller:(id)theCon
{
NSRect frame;

frame.origin = aPoint;
frame.size.width = frame.size.height = DIMENSION;

[super initWithFrame:frame];

[self setDefaults];
con = theCon;

row = rval;
col = cval;

return self;
}

- (int)row
{
return row;
}

- (int)col
{
return col;
}

- setDefaults
{
isMine = NO;
neighbors = 0;
covered = COV_COVERED;
marked = NO;

[self setNeedsDisplay:YES];
return self;
}

- setMine:(BOOL)flag;
{
if(flag!=isMine){
[self setNeedsDisplay:YES];
}

isMine = flag;
return self;
}

- setNeighbors:(int)count;
{
if(count!=neighbors){
[self setNeedsDisplay:YES];
}

neighbors = count;
return self;
}

- setCovered:(COV_STATE)aState
{
if(aState!=covered){
[self setNeedsDisplay:YES];
}

covered = aState;
return self;
}

- setMarked:(BOOL)flag;
{
if(flag!=marked){
[self setNeedsDisplay:YES];
}

marked = flag;
return self;
}

- (BOOL)mine;
{
return isMine;
}

- (int)neighbors
{
return neighbors;
}

- (COV_STATE)covered
{
return covered;
}

- (BOOL)marked
{
return marked;
}

- (void)drawRect:(NSRect)aRect
{
PSsetlinewidth(1.0);

if(covered==COV_COVERED){
if(marked==YES){
int center = DIMENSION-DIMENSION/3, width = DIMENSION/3+4;

[[NSColor blackColor] set];
PSrectfill(center-width/2, 2, width, 4);
PSrectfill(center-width/2+2, 6, width-4, 3);

PSmoveto(center, 9);
PSlineto(center, 5*DIMENSION/6);
PSstroke();

[[NSColor redColor] set];
PSrectfill(center-DIMENSION/2, DIMENSION/2,
DIMENSION/2, 5*DIMENSION/6-DIMENSION/2);
}
}
else{
if(covered==COV_UNCOVERED_BY_CLICK && isMine==YES){
[[NSColor redColor] set];
}
else{
[[NSColor whiteColor] set];
}
PSrectfill(0, 0, DIMENSION, DIMENSION);

if(isMine==YES || marked==YES){
[[NSColor blackColor] set];
PSarc(DIMENSION/2, DIMENSION/2,
DIMENSION/2-3, 0, 360);
PSfill();

PSgsave();

PStranslate(DIMENSION/2, DIMENSION/2);

PSmoveto(-DIMENSION/2, 0);
PSlineto(DIMENSION/2, 0);
PSmoveto(0, -DIMENSION/2);
PSlineto(0, DIMENSION/2);

PSrotate(45);

PSmoveto(-DIMENSION/2, 0);
PSlineto(DIMENSION/2, 0);
PSmoveto(0, -DIMENSION/2);
PSlineto(0, DIMENSION/2);

PSstroke();

PSgrestore();

[[NSColor whiteColor] set];
PSarc(DIMENSION/2-DIMENSION/8, DIMENSION/2+DIMENSION/8,
DIMENSION/10, 0, 360);
PSfill();
}

if(isMine==NO && marked==YES){
[[NSColor redColor] set];

PSgsave();

PSsetlinewidth(5.0);
PSmoveto(3, 3);
PSlineto(DIMENSION-3, DIMENSION-3);
PSmoveto(3, DIMENSION-3);
PSlineto(DIMENSION-3, 3);
PSstroke();

PSgrestore();
}

if(isMine==NO && marked==NO && neighbors>0){
char str[2] = { '0', 0 };
float comp = ((float)neighbors)/9.0;
NSFont *font =
[NSFont systemFontOfSize:DIMENSION-6];
[font set];

str[0] += neighbors;

PSsetrgbcolor(1.0-comp, comp, comp);
PSmoveto(DIMENSION/2-4, DIMENSION/4);
PSshow(str);
PSstroke();
}
}


[[NSColor blackColor] set];
PSrectstroke(0, 0, DIMENSION, DIMENSION);
[[NSColor whiteColor] set];
PSrectstroke(1, 1, DIMENSION-2, DIMENSION-2);
}


- (void)mouseDown:(NSEvent *)theEvent
{
if(covered==COV_COVERED && marked==NO){
[con uncovered:self];
[self setCovered:COV_UNCOVERED_BY_CLICK];
}
}

- (void)rightMouseDown:(NSEvent *)theEvent
{
if(covered==COV_COVERED){
if(marked==NO && ![con markCount]){
NSBeep();
return;
}

[self setMarked:(marked==YES ? NO : YES)];
[con marked:self];
}
}

@end

gnustep-gmines-0.2/main.m000064400000000000000000000051761227734174600154460ustar00rootroot00000000000000/*
* main.m: main function of Fractal.app
*
* Copyright (c) 2002 Free Software Foundation, Inc.
*
* Author: Marko Riedel
* Date: May 2002
*
* With code fragments from MemoryPanel, ImageViewer, Finger, GDraw
* and GShisen.
*
* This sample program is part of GNUstep.
*
* 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.
*/

#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>

#import "Controller.h"

int main(int argc, const char **argv, char** env)
{
NSAutoreleasePool *pool;
NSApplication *app;
NSMenu *mainMenu;
NSMenu *menu;
NSMenuItem *menuItem;
Controller *controller;

pool = [NSAutoreleasePool new];
app = [NSApplication sharedApplication];

//
// Create the Menu
//

// Main Menu
mainMenu = AUTORELEASE ([NSMenu new]);

// Info SubMenu
menuItem = (NSMenuItem *)[mainMenu addItemWithTitle: @"Info"
action: NULL
keyEquivalent: @""];
menu = AUTORELEASE ([NSMenu new]);
[mainMenu setSubmenu: menu forItem: menuItem];
[menu addItemWithTitle: @"Info Panel..."
action: @selector (orderFrontStandardInfoPanel:)
keyEquivalent: @""];
[menu addItemWithTitle: @"Preferences..."
action: @selector (runPreferencesPanel:)
keyEquivalent: @""];
[menu addItemWithTitle: @"Help..."
action: @selector (orderFrontHelpPanel:)
keyEquivalent: @"?"];

// Game MenuItem.
menuItem = (NSMenuItem *)[mainMenu addItemWithTitle: @"New game"
action: @selector(newGame:)
keyEquivalent: @""];

// Hide MenuItem
[mainMenu addItemWithTitle: @"Hide"
action: @selector (hide:)
keyEquivalent: @"h"];

// Quit MenuItem
[mainMenu addItemWithTitle: @"Quit"
action: @selector (terminate:)
keyEquivalent: @"q"];

[app setMainMenu: mainMenu];

controller = [Controller new];
[app setDelegate: controller];

NSApplicationMain(argc, argv);

[[NSUserDefaults standardUserDefaults] synchronize];

[controller release];
[pool release]; /* actually useless */
return 0;
}

 
ÄÉÚÁÊÎ É ÒÁÚÒÁÂÏÔËÁ: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
ÔÅËÕÝÉÊ ÍÁÊÎÔÅÊÎÅÒ: Michael Shigorin