闲笔小筑

她非哲人,她不能超脱。她非草民,她不能苟且。


emma @ 2007-05-13 01:57

荒芜已久,来灌几桶。捡着Blogcn现在不太好上
#ifndef BLOCK_H
#define BLOCK_H
#include <e32std.h>
class TBlock
{
public:
  TBlock() :iType(0), iRot(0) {}
  static int BlockCount();
  static TBlock Block(int id);
  static TBlock RandomBlock(TInt64 &seed);
  void Rotate(int dir);
  TInt8 RowMask(int nr) const;
  TInt8 Color() const;
protected:
  TBlock(int aType, int aRot) :iType(aType), iRot(aRot) { }
private:
  TInt8 iType;
  TInt8 iRot;
};
#endif

#include "block.h"
#include <e32math.h>

const int numBlocks=7;
const TUint16 bl_types[4][numBlocks]=
//  ####     ###      ###     ##     ##      ##      ###
//             #      #      ##       ##     ##       #
  {{0x4444, 0x0e20, 0x0740, 0x06c0, 0x0c60, 0x6600, 0xe400},
   {0x0f00, 0x0644, 0x4460, 0x4620, 0x2640, 0x6600, 0x8c80},
   {0x4444, 0x0470, 0x02e0, 0x06c0, 0x0c60, 0x6600, 0x04e0},
   {0x0f00, 0x2260, 0x0622, 0x4620, 0x2640, 0x6600, 0x2620},
  };

int TBlock::BlockCount()
{
  return numBlocks;
}
TBlock TBlock::Block(int id)
{
  return TBlock(id, 0);
}
TBlock TBlock::RandomBlock(TInt64 &seed)
{
  return Block(Math::Rand(seed)%numBlocks);
}
void TBlock::Rotate(int dir)
{
  if (dir>0) iRot++;
  if (dir<0) iRot+=3;
  iRot%=4;
}
TInt8 TBlock::RowMask(int nr) const
{
  return (bl_types[iRot][iType]>>(4*nr))&0xf;
}
TInt8 TBlock::Color() const
{
  return iType+1;
}

#ifndef GRID_H     #define GRID_H
#include <e32std.h>   #include "block.h"
const int KGridX=10;
const int KGridY=20;
class TGrid
{
public:
  TFixedArray<TUint16, KGridY> iMask;
  TFixedArray<TFixedArray<TInt8, KGridX>, KGridY> iContent;
  TGrid();
  bool DoesCollide(const TBlock &b, const TPoint &p) const;
  void PutBlock(const TBlock &b, const TPoint &p);
  void Clear();
};
#endif

#include "grid.h"
#include "s60test.pan"
TGrid::TGrid()
{
  Clear();
}

void TGrid::Clear()
{
  for (int i=0; i<KGridY; i++)
  {
    iMask[i]=0x003f;
    for (int j=0; j<KGridX; j++)
      iContent[i][j]=0;
  }
}

bool TGrid::DoesCollide(const TBlock &b, const TPoint &p) const
{
  int i;
  for (i=p.iY; i<p.iY+4; i++)
  {
    if (i<0)
    {
      if ((static_cast<TUint32>(b.RowMask(i-p.iY))<<(12-p.iX))&0xf003f)
        return true;
    } else
    if (i>=KGridY)
    {
      if (b.RowMask(i-p.iY)) return true;
    } else
    {
      if (iMask[i]&(b.RowMask(i-p.iY)<<(12-p.iX))) return true;
      if (p.iX<0 && ((b.RowMask(i-p.iY)>>(4+p.iX)))) return true;
    }
  }
  return false;
}

void TGrid::PutBlock(const TBlock &b, const TPoint &p)
{
  int i, j;
  int c=b.Color();
  for (i=p.iY; i<p.iY+4; i++)
  {
    if (i<0) continue;
    if (i>=KGridY) break;
    TUint16 mask=b.RowMask(i-p.iY);
    iMask[i]|=mask<<(12-p.iX);
    for (j=p.iX; j<p.iX+4; j++)
      if (mask&(1<<(3-j+p.iX)))
        iContent[i][j]=c;
  }
}

#ifndef S60TESTENGINE
#define S60TESTENGINE
#include "e32base.h"

class CS60TestDocument;
class CS60TestEngine : public CTimer
{
public:
  static CS60TestEngine* NewLC(CS60TestDocument *aDoc);
  static CS60TestEngine* NewL(CS60TestDocument *aDoc);

  void KeyLeft();
  void KeyRight();
  void KeyRotate(int dir);
  void KeyDrop();
  void Reset();
int iInterval;
  TTime iBeginTime;
  TTime iPauseTime;

  enum TEngineState
  {
    EGameOver=0,
    EPaused,
    ERunning
  };
  TEngineState iState;
protected:
  CS60TestDocument *iDoc;
CS60TestEngine(CS60TestDocument *aDoc)
  :CTimer(EPriorityStandard), iInterval(500000), iDoc(aDoc) { }
  void RunL();
  void ConstructL();
};
#endif

#include <aknnotewrappers.h>
#include <e32def.h>
#include "s60testdocument.h"
#include "s60testengine.h"
#include "s60test.pan"
#include "step4.rsg"

CS60TestEngine *CS60TestEngine::NewLC(CS60TestDocument *aDoc)
{
  CS60TestEngine *self=new(ELeave) CS60TestEngine(aDoc);
  CleanupStack::PushL(self);
  self->ConstructL();
  return self;
}

CS60TestEngine *CS60TestEngine::NewL(CS60TestDocument *aDoc)
{
  CS60TestEngine *self=CS60TestEngine::NewLC(aDoc);
  CleanupStack::Pop(self);
  return self;
}


void CS60TestEngine::ConstructL()
{
  CTimer::ConstructL();
  CActiveScheduler::Add(this);
  After(iInterval);
  iState=ERunning;
}

void CS60TestEngine::KeyLeft()
{
  iDoc->MoveBlock(iDoc->iBlockPos-TPoint(1, 0));
}

void CS60TestEngine::KeyRight()
{
  iDoc->MoveBlock(iDoc->iBlockPos+TPoint(1, 0));
}

void CS60TestEngine::KeyDrop()
{
  while (iDoc->MoveBlock(iDoc->iBlockPos+TPoint(0, 1)))
    ;
}

void CS60TestEngine::KeyRotate(int dir)
{
  iDoc->RotateBlock(dir);
}

void CS60TestEngine::Reset()
{
  if (iState==ERunning)
    Cancel();
  iState=ERunning;
  After(iInterval);
}

void CS60TestEngine::RunL()
{
  if (!iDoc->MoveBlock(iDoc->iBlockPos+TPoint(0, 1)))
  {
    if (!iDoc->FixBlock())
    {
      // Game over
      TBuf<64> message;
      CEikonEnv::Static()->ReadResource(message, R_NOTE_GAME_OVER);
      CAknInformationNote *informationNote=new(ELeave) CAknInformationNote;
      informationNote->ExecuteLD(message);
      iState=EGameOver;
      return;
    }
    iDoc->CheckRows();

    if (iDoc->iLevel<=(iDoc->iLines/10))
    {
      iInterval*=3;
      iInterval/=4;
      iDoc->iLevel++;
    }

    iDoc->NewBlock();
  }
  iBeginTime.HomeTime();
  After(iInterval);
}

#ifndef __S60TEST_DOCUMENT_H__
#define __S60TEST_DOCUMENT_H__
#include <akndoc.h>
#include "grid.h"
#include "block.h"
// Forward references
class CEikAppUi;
class CEikApplication;
class CS60TestAppUi;

class CS60TestDocument : public CAknDocument
{
public:
  static CS60TestDocument* NewL(CEikApplication& aApp);
  static CS60TestDocument* NewLC(CEikApplication& aApp);
  ~CS60TestDocument();
  void GetRowContent(int nr, TFixedArray<TInt8, KGridX> &row) const;
  int CheckRows();
  void NewBlock();
  void Reset();
  bool IsBlock(const TPoint &p) const;
  bool MoveBlock(const TPoint &p);
  bool RotateBlock(int dir);
  bool FixBlock();

  TGrid iGrid;
  TBlock iCurrBlock;
  TPoint iBlockPos;
  TInt32 iScore;
  TInt16 iLines;
  TInt16 iLevel;
  CS60TestAppUi *iAppUi;
  TInt64 seed;
public: // from CAknDocument
  CEikAppUi* CreateAppUiL();
private:
  void ConstructL();
  CS60TestDocument(CEikApplication& aApp);
};
#endif
#include "S60TestAppUi.h"
#include "S60TestDocument.h"
// Standard Symbian OS construction sequence
CS60TestDocument *CS60TestDocument::NewL(CEikApplication& aApp)

{
  CS60TestDocument *self=NewLC(aApp);
  CleanupStack::Pop(self);
  return self;
}

CS60TestDocument *CS60TestDocument::NewLC(CEikApplication& aApp)
{
  CS60TestDocument *self=new(ELeave) CS60TestDocument(aApp);
  CleanupStack::PushL(self);
  self->ConstructL();
  return self;
}

void CS60TestDocument::ConstructL()
{
  TTime time;
  time.HomeTime();
  seed=time.Int64();
  Reset();
}

CS60TestDocument::CS60TestDocument(CEikApplication& aApp)
:CAknDocument(aApp),
 iGrid(),
 iCurrBlock(),
 iBlockPos(3, -4)
{
}

CS60TestDocument::~CS60TestDocument()
{
}

void CS60TestDocument::Reset()
{
  iGrid.Clear();
  iBlockPos=TPoint(3, -4);
  iScore=0;
  iLines=0;
  iLevel=1;
  iCurrBlock=TBlock::RandomBlock(seed);
}

void CS60TestDocument::NewBlock()
{
  iCurrBlock=TBlock::RandomBlock(seed);
  iBlockPos=TPoint(3, -4);
}

bool CS60TestDocument::MoveBlock(const TPoint &p)
{
  if (iGrid.DoesCollide(iCurrBlock, p)) return false;
  iBlockPos=p;
  iAppUi->UpdateBoard();
  return true;
}

bool CS60TestDocument::FixBlock()
{
  int i;
  // check if it is outside the board
  for (i=0; i<-iBlockPos.iY; i++)
    if (iCurrBlock.RowMask(i))
      return false;

  iGrid.PutBlock(iCurrBlock, iBlockPos);
  return true;
}

int CS60TestDocument::CheckRows()
{
  int offset=0, i, j;
  for (i=KGridY-1; i>=0; i--)
  {
    if (iGrid.iMask[i]==0xffffU)
    {
      offset++;
      iScore++;
      iLines++;
      continue;
    }

    if (offset>0)
    {
      iGrid.iMask[i+offset]=iGrid.iMask[i];
      for (j=0; j<KGridX; j++)
        iGrid.iContent[i+offset][j]=iGrid.iContent[i][j];
    }
  }

  for (i=0; i<offset; i++)
  {
    iGrid.iMask[i]=0x003f;
    for (j=0; j<KGridX; j++)
      iGrid.iContent[i][j]=0;
  }

  if (offset>0) iAppUi->UpdateBoard();
  return offset;
}

bool CS60TestDocument::RotateBlock(int dir)
{
  iCurrBlock.Rotate(dir);
  if (iGrid.DoesCollide(iCurrBlock, iBlockPos))
  {
    iCurrBlock.Rotate(-dir);
    return false;
  }
  iAppUi->UpdateBoard();
  return true;
}

bool CS60TestDocument::IsBlock(const TPoint &p) const
{
  if (p.iX>=iBlockPos.iX && p.iX<iBlockPos.iX+4 &&
      p.iY>=iBlockPos.iY && p.iY<iBlockPos.iY+4)
    return (iCurrBlock.RowMask(p.iY-iBlockPos.iY)&(1<<(3-p.iX+iBlockPos.iX)))>0;
  return false;
}

void CS60TestDocument::GetRowContent(int nr, TFixedArray<TInt8, KGridX> &row) const
{
  int i;
  for (i=0; i<KGridX; i++)
  {
    if (IsBlock(TPoint(i, nr))) row[i]=iCurrBlock.Color();
      else row[i]=iGrid.iContent[nr][i];
  }
}

CEikAppUi *CS60TestDocument::CreateAppUiL()
{
  // Create the application user interface, and return a pointer to it,
  // the framework takes ownership of this object
  iAppUi=new(ELeave) CS60TestAppUi(this);
  return iAppUi;
}
#ifndef __S60TEST_APPVIEW_H__
#define __S60TEST_APPVIEW_H__
#include <coecntrl.h>
class CS60TestDocument;
class CS60TestEngine;
class CS60TestAppView : public CCoeControl
{
public:
  static CS60TestAppView* NewL(const TRect& aRect, CS60TestDocument *aDoc, CS60TestEngine *aEngine);
  static CS60TestAppView* NewLC(const TRect& aRect, CS60TestDocument *aDoc, CS60TestEngine *aEngine);
  ~CS60TestAppView();

  static const TUint32 KColors[10];

public:  // from CCoeControl
  void Draw(const TRect& aRect) const;

private:
  void ConstructL(const TRect& aRect);
  CS60TestAppView(CS60TestDocument *aDoc, CS60TestEngine *aEngine);
  CS60TestDocument *iDoc;
  CS60TestEngine *iEngine;
};
#endif

#include <coemain.h>
#include <eikenv.h>
#include "S60TestAppView.h"
#include "S60TestDocument.h"
#include "S60TestEngine
.h"
const TUint32 CS60TestAppView::KColors[10]=
  {0xffffff, 0xff0000, 0x00ff00, 0x0000ff, 0xff00ff,
   0xcc00dd, 0xadbeef, 0x000000, 0xffff00, 0xaaaaaa};
CS60TestAppView *CS60TestAppView::NewL(const TRect& aRect, CS60TestDocument *aDoc, CS60TestEngine *aEngine)
{
  CS60TestAppView *self=CS60TestAppView::NewLC(aRect, aDoc, aEngine);
  CleanupStack::Pop(self);
  return self;
}

CS60TestAppView* CS60TestAppView::NewLC(const TRect& aRect, CS60TestDocument *aDoc, CS60TestEngine *aEngine)
{
  CS60TestAppView *self=new(ELeave) CS60TestAppView(aDoc, aEngine);
  CleanupStack::PushL(self);
  self->ConstructL(aRect);
  return self;
}

CS60TestAppView::CS60TestAppView(CS60TestDocument *aDoc, CS60TestEngine *aEngine)
{
  iDoc=aDoc;
  iEngine=aEngine;
}

CS60TestAppView::~CS60TestAppView()
{
}

void CS60TestAppView::ConstructL(const TRect& aRect)
{
  CreateWindowL();
  SetRect(aRect);
  ActivateL();
}

const int KCellSize=7;
const int KBoardOffset=2;

void CS60TestAppView::Draw(const TRect& /*aRect*/) const
{
  CWindowGc &gc=SystemGc();
  TRect rect=Rect();
  gc.Clear(rect);

  int i, j;
  TFixedArray<TInt8, KGridX> arr;
  gc.SetPenColor(TRgb(0));
  gc.SetBrushStyle(CWindowGc::ESolidBrush);

  for (i=0; i<=KGridY; i++)
    gc.DrawLine(TPoint(KBoardOffset, KBoardOffset+KCellSize*i),
                TPoint(KBoardOffset+KGridX*KCellSize, KBoardOffset+KCellSize*i));

  for (i=0; i<=KGridX; i++)
    gc.DrawLine(TPoint(KBoardOffset+KCellSize*i, KBoardOffset),
                TPoint(KBoardOffset+KCellSize*i, KBoardOffset+KGridY*KCellSize));

  for (i=0; i<KGridY; i++)
  {
    iDoc->GetRowContent(i, arr);
    for (j=0; j<KGridX; j++)
    {
      gc.SetBrushColor(KColors[arr[j]]);
      if (arr[j])
        gc.DrawRect(TRect(KBoardOffset+KCellSize*j, KBoardOffset+KCellSize*i,
              KBoardOffset+KCellSize*(j+1)+1, KBoardOffset+KCellSize*(i+1)+1));
    }
  }
}

#ifndef __S60TEST_APPUI_H__
#define __S60TEST_APPUI_H__
#include <aknappui.h>
#include "s60testengine.h"
class CS60TestDocument;
// Forward reference
class CS60TestAppView;

class CS60TestAppUi : public CAknAppUi
{
public:
  void ConstructL();
  CS60TestAppUi(CS60TestDocument *aDoc);
  ~CS60TestAppUi();
  void UpdateBoard();

public: // from CAknAppUi
  void HandleCommandL(TInt aCommand);
  TKeyResponse HandleKeyEventL(const TKeyEvent& /*aKeyEvent*/,
    TEventCode /*aType*/);

private:
  CS60TestEngine *iEngine;
  CS60TestAppView *iAppView;
  CS60TestDocument *iDoc;
};
#endif
#include <coemain.h>
#include <eikenv.h>

#include "S60TestAppView.h"
#include "S60TestDocument.h"
#include "S60TestEngine.h"

const TUint32 CS60TestAppView::KColors[10]=
  {0xffffff, 0xff0000, 0x00ff00, 0x0000ff, 0xff00ff,
   0xcc00dd, 0xadbeef, 0x000000, 0xffff00, 0xaaaaaa};

CS60TestAppView *CS60TestAppView::NewL(const TRect& aRect, CS60TestDocument *aDoc, CS60TestEngine *aEngine)
{
  CS60TestAppView *self=CS60TestAppView::NewLC(aRect, aDoc, aEngine);
  CleanupStack::Pop(self);
  return self;
}

CS60TestAppView* CS60TestAppView::NewLC(const TRect& aRect, CS60TestDocument *aDoc, CS60TestEngine *aEngine)
{
  CS60TestAppView *self=new(ELeave) CS60TestAppView(aDoc, aEngine);
  CleanupStack::PushL(self);
  self->ConstructL(aRect);
  return self;
}

CS60TestAppView::CS60TestAppView(CS60TestDocument *aDoc, CS60TestEngine *aEngine)
{
  iDoc=aDoc;
  iEngine=aEngine;
}

CS60TestAppView::~CS60TestAppView()
{
}

void CS60TestAppView::ConstructL(const TRect& aRect)
{
  CreateWindowL();
  SetRect(aRect);
  ActivateL();
}

const int KCellSize=7;
const int KBoardOffset=2;

void CS60TestAppView::Draw(const TRect& /*aRect*/) const
{
  CWindowGc &gc=SystemGc();
  TRect rect=Rect();
  gc.Clear(rect);

  int i, j;
  TFixedArray<TInt8, KGridX> arr;
  gc.SetPenColor(TRgb(0));
  gc.SetBrushStyle(CWindowGc::ESolidBrush);

  for (i=0; i<=KGridY; i++)
    gc.DrawLine(TPoint(KBoardOffset, KBoardOffset+KCellSize*i),
                TPoint(KBoardOffset+KGridX*KCellSize, KBoardOffset+KCellSize*i));

  for (i=0; i<=KGridX; i++)
    gc.DrawLine(TPoint(KBoardOffset+KCellSize*i, KBoardOffset),
                TPoint(KBoardOffset+KCellSize*i, KBoardOffset+KGridY*KCellSize));

  for (i=0; i<KGridY; i++)
  {
    iDoc->GetRowContent(i, arr);
    for (j=0; j<KGridX; j++)
    {
      gc.SetBrushColor(KColors[arr[j]]);
      if (arr[j])
        gc.DrawRect(TRect(KBoardOffset+KCellSize*j, KBoardOffset+KCellSize*i,
              KBoardOffset+KCellSize*(j+1)+1, KBoardOffset+KCellSize*(i+1)+1));
    }
  }
}

#ifndef __S60TEST_APPLICATION_H__
#define __S60TEST_APPLICATION_H__
#include <aknapp.h>
class CS60TestApplication : public CAknApplication
{
public:  // from CAknApplication
  TUid AppDllUid() const;
protected: // from CAknApplication
  CApaDocument* CreateDocumentL();
};#endif // __S60TEST_APPLICATION_H__

#include "S60TestDocument.h"
#include "S60TestApplication.h"

// UID for the application, this should correspond to the uid defined in the mmp file
static const TUid KUidS60TestApp = {0x04545FF4};

CApaDocument* CS60TestApplication::CreateDocumentL()

  CApaDocument* document = CS60TestDocument::NewL(*this);
  return document;
}

TUid CS60TestApplication::AppDllUid() const
{
  return KUidS60TestApp;
}


#ifndef __S60TEST_HRH__
#define __S60TEST_HRH__

#include "S60TestApplication.h"

// DLL entry point, return that everything is ok
GLDEF_C TInt E32Dll(TDllReason /*aReason*/)
{
  return KErrNone;
}
// Create an application, and return a pointer to it
EXPORT_C CApaApplication* NewApplication()
{
  return (new CS60TestApplication);
}
 

 

enum TS60TestIds
{
  ES60TestNewGame = 1,  // start value must not be 0
  ES60TestPause
};
#endif

文件.pan

#ifndef __S60TEST_PAN__
#define __S60TEST_PAN__

enum TS60TestPanics
{
  ES60TestBasicUi = 1,
  ES60TestAssert = 2
  // add further panics here
};

inline void Panic(TS60TestPanics aReason)
{
  _LIT(applicationName, "S60Test");
  User::Panic(applicationName, aReason);
}

#endif




 
emma @ 2006-09-13 02:30

东邪西毒原声随想   Ashes  Of  Time

好多人话东邪西毒好难懂,画面穿来插去人物又多情节又繁复,甚至有人会闷的昏睡过去。初看这部片我也是这种感受,后来慢慢才看明白,便恍然大悟这部电影的妙处。听了一暑假东邪西毒的OST原声,空旷,婉转,不禁浮想联翩,一段段原声串起整个情节,看不懂东邪西毒的各位或许能多些了解,恰逢50岁生日,也算是给哥哥的礼物。
Ashes  Of  Time,时间的灰烬。



1.天地孤影人任我行
出现在片头,片尾
空旷,重锤一样急剧敲击着的低音,回响在波涛滚滚的海面上。
东邪西毒讲的故事整个在沙漠里,为何会有海面呢?ashes  of  time ,记忆的尽头,沧海桑田,眼前的沙漠和海面也许根本就是一回事。
我曾经无意中做过一张图片,用的是那张著名的牵手,见了哥哥和老唐两个人帖到滚滚波涛之中,仿似两个人勇往直前的步入黄河,义无反顾。记忆的尽头,已经没有去路。
 

2. 杀手生涯
欧阳锋自述,黄药师出场,饮酒时背景音乐
其实,杀手并不是我喜欢的职业,杀一个人也不是好容易,不过为了生活,必须如此。
寂静深夜,空旷长街,隐匿在黑暗中无声前行。
远处的敲更声,一声声逼近,心中警觉骤然升起,那是一个杀手特有的感应。鼓声暗哑,危机四伏,小心的一步步跟上去探个究竟,或者是一场生死较量的开始,或者只是过于谨慎的狐疑,能得到短暂的安宁,直到下一个感应的出现。杀手要永远保持这种警觉,直至生命的最后一刻。

我有一个朋友,他的名叫黄药师。他每年春天都会来看我,我不知道为什么。
黄药师说:有人送我一坛酒。
我没有喝,我不知道,黄药师说的他,是她。

B年,惊蛰,黄药师最后一次来看欧阳锋,带来欧阳大嫂的醉生梦死,然后去了盲武士的乡下。

3.情欲流转
黄药师在山洞里 遇到桃花(刘嘉玲)时主音乐
先是一片宁静,然后一种莫名的喜悦油然而起,瞬间包围住眼耳鼻舌的四面八方,脑海内响起泠然欢快的节奏,叮咚叮咚,游走全身,眼睛只盯住眼前人,我发觉她好像一个人。
好多年以后,我有个名,叫做东邪,我只记得我最爱桃花。

B年,夏,黄药师离开,成名东邪。

4.又爱又恨
出现在黄药师初遇慕容燕,慕容嫣等黄药师不至悲痛欲绝一段。
黄药师是个放荡不羁的人,好容易令人中意,也好容易伤害到其他人,慕容嫣就是一个,黄药师喝了醉生梦死,去了桃花岛,忘记了慕容嫣,慕容嫣由爱而恨,一线之间。要一个人死的最痛苦方法,就是杀掉他最中意的人。藏在背后的受伤人,在记忆中不断的重温甜蜜的回忆,而从回忆中清醒过来的痛却这么的人发疯,
既然相爱,又为什么要离开?
有的人离开了之后才发觉,离开的人才是自己的最中意。

这句话,是欧阳锋的心声。

B年,立春,东风解冻,黄药师结识慕容嫣,酒醉玩笑要娶其妹。数月后,约定见面时黄药师因醉生梦死而失约,慕容嫣双面性格找欧阳锋杀人。慕容嫣曾找到桃花,因不愿承认桃花是黄药师最中意的女子而未杀之。

5.昔情难追
慕容嫣最后自述一段背景音乐
曲调婉转回还,悠长荡漾,情深深意绵绵流淌而出。女人回忆着桃花树下的初遇,甜蜜与痛苦的交织。如果有一天我忍不住问你,你一定要骗我,就算你心里有几不愿意,都不要话我听,你最中意的人不是我。

黄药师说不可以爱上两个女人,来拒绝慕容嫣。慕容嫣以为另外一个女人是桃花,但实际黄药师中意的是欧阳大嫂张曼玉。

6.幻影交叠
慕容嫣抚摸欧阳锋一段
鸟笼旋转,光影细碎,斑驳陆离,虽然不昏暗,但却已足够去幻想。那晚的夜好长。欧阳锋想的是他大嫂(张曼玉),温暖的手,现实与想象交织,四人的交叉并置,张曼玉的手柔美,林青霞的手削瘦,。
有些事情我总是不肯说,总以为可以得到自己想要的,不用太在乎,而如今换作另一个人的身份,才发觉并不是件很难的事情,可我却拒绝了。

B年,暮春,慕容嫣离开。
数年后,独孤求败出现,波光潋滟,林青霞绝美扮相。

6.纠缠难解

你一定好喜欢你老婆。
对。
既然这样,为什么不留在她身边呢?

B年,暮春时节,盲剑客(桃花老公,黄药师朋友)出现,等待马贼,但因为桃花爱上黄药师。孤女(杨采妮)已出场,潜笔。

7.尘归尘土归土
欧阳锋点破盲剑客失明,马贼到来前 一段
盲武士失明,与马贼决一死战。临走强吻孤女,他知自己此去难再返,惦记的依然是桃花。

B年,暮春时节。盲剑客死于马贼乱刀之下。死前拜托欧阳锋告诉黄药师,桃花在等黄药师。而此时黄药师独自饮酒正要离开,其实并未忘记盲剑客,因为盲剑客到死都没有原谅他。

8.马贼来袭
洪七出现,斩杀马贼一段。
其实行走江湖是件好痛苦的事,会了武功好多事情都不能做。不屑耕田,不耻抢劫,不愿卖艺,但武功高强都要吃饭的,肚子好快就饿了。
吃饭很重要,但为了一个鸡蛋失去一根手指,洪七还是做了,所以欧阳锋不喜欢洪七。
可能洪七就是那种不会嫉妒的人。

9. 杀手生涯  接  天地孤影人任我行
.欧阳锋劝洪七带老婆一起上路

难道要我带着老婆闯天下吗?
谁说不行,事在人为。我曾经和你一样,一心打天下,以为抛下自己的女人……谁知我回来时候才发觉,她变做我大嫂。

B年,十五,失星当值,大利北方。洪七离开,逆风北行,日后名成北丐。大雨频至,欧阳锋望着他们的背景,好嫉妒,他也想起白陀山。
C年,春,欧阳锋前往盲剑客的乡下,见到桃花,知道黄药师每年来看他的原因。

10.昔情难追 追忆

欧阳大嫂终于出场,烈焰红唇揭开萦绕已久的神秘面纱,温婉端庄的容颜下是一颗炽烈的心,年轻时,她和他,一样的固执。

我不跟他走。他不肯说,我就让他永远得不到,我以为我赢了,可在我一辈子最好的时间里,我最爱的人不在我身边,从开始我就已经输了。
你是他的好朋友,为什么你不告诉他我在这里
我答应过你,所以一直都没有告诉他
你太老实了……
女人是聪明的,可聪明的女人没有算计到另一个中意她的人。

A年,秋天,欧阳大嫂病死,托黄药师带醉生梦死给欧阳锋。

C年,惊蛰,黄药师没有来看欧阳锋。不久,欧阳锋收到信,得知大嫂两年前的秋天病逝。

命书里说我是一个孤星入命的人,父母早亡只有哥哥相依为命,夫妻分离有实无名。我饮做最后半坛醉生梦死,每当望向白陀山的方向,还会记得曾经有个人在那里等他。

13.世事苍茫成云烟
D年,春,火迫金行,大利西方,欧阳锋离开沙漠,回到白陀山,成名西毒。

 



 
emma @ 2006-08-29 22:16

2006-8-23
我和爸爸转地球

事情其实很简单,本月的ADSL还有盈余,一边下电影,一边下个google earth。
特地把做面调成1024*768(因为老爸眼花左翼我家的桌面一直是800* 600),再把老爸拖到电脑前,教他拖着鼠标满地球的找我家在哪儿。
我很和善的指给我爸看西南角的一栋楼,老爸眯着眼睛煞有介事的盯着看了N秒,往前蹭蹭又往后瞅瞅,我满怀期盼的问:咋样?清楚不?
老爸又晃了晃头,瞅了我一眼,不紧不慢的说:等会儿我拿眼镜去。
还是老爸牛啊
不过老爸学东西能力相当快,一会儿就跟开车握方向盘似的绕着唐山外环绕了一圈,然后津津有味的找我们家,找我小时候住的小区,找他原来上班的焦化厂,找开平赶集的新城,找郊区老家的旧房子,和老妈两个人叽叽喳喳讨论素梅家盖了新房子冯满家把院子里的大树砍了给村东边的大坑被填平了西边学校门口又修了新马路。妈妈早年曾在那边生活,我是一直在城市长大,小时候去看过几次现在好多年没回去过,老家除了一栋空房子再无别物,还不如门口拴牛的桩子可以让我和我哥比赛套圈,而对老爸老妈而言那个地方却有着很多牵挂。

老爸摘下眼镜,郑重其事的说:嗯,这个东西不错阿 ,以后我们就不用回去看了,直接点点就可以了嘛。
天知道google earth多久更新一次


 
emma @ 2006-07-29 22:54

工作了才知道,有空调的办公室,不如闹哄哄的教室. 工作了才知道,大学里爱情是游戏,现在爱情是交易. 工作了才知道,有时候一顿饭吃上千块也是一种需要. 工作了才知道,学生都是装大款,真正的有钱人都装穷. 工作了才知道,原来穿得像学生都是鸡,穿得像鸡的都是学生. 工作了才知道,穿什么不取决与品位,取决与场合. 工作了才知道,学校三点一线,现在却是画直线. 工作了才知道,原来买房子也是个远大的理想. 工作了才知道,成为社会精英的几率,和中彩票是一样的. 工作了才知道,原来消灭剥削只是一种传说. 工作了才知道,自立的代价是失去更多的自由. 工作了才知道,搞计算机的根本不用等级证,不搞计算机的,等级证是废纸. 工作了才知道,原来在中国的外国企业也是用中文比较多. 工作了才知道,研究生和我们的区别就是刚参加工作时每月多拿200块钱. 工作了才知道,所有证书都是敲门砖,敲开门就没人看了. 工作了才知道,真正英语好的人都是工作以后出于需要自学的. 工作了才知道,学校的老师比起企业的一般领导,社会地位要高很多. 工作了才知道,搞中国人力资源的只要能判断毕业证真违就行了. 工作了才知道,我大学是白上了. 工作了才知道,不上大学我根本不可能有工作. 工作了才知道,原来大部分人只是为了活著而活著。


 
emma @ 2006-07-29 22:44



 
emma @ 2006-07-23 22:16


图书馆的蚊子 崩溃的闹钟



最近点子相当正,综述有二:
其一:
穿了两天裙子,叮了二十个包
左脚上直径长达4cm,连红带肿,痛痒难忍
右臂更离谱,一只蚊子行凶时被我当场抓获就地正法
然后五秒钟之后,眼看着一个大包缓缓升起,如金字塔一般傲视平原之上
tnnd法老的死亡诅咒

图书馆的蚊子相当强悍

其二:
某日清晨
mm s早起上班,只余我一人懒睡
正mm s洗漱不在
不知谁人的手机闹钟连铃声带振动开响
我躺在床上纹丝不动
闭着眼睛脑中一片清明:有人回来啊有人回来啊把闹钟按掉了阿……
上帝似乎没听到我的祈求
但是他很合作的把闹钟“按”掉了
我安心的打算继续入睡,尽管有不祥的预感
未几,门动脚步响,有人回来了
我开始祈祷:闹钟响阿闹钟响阿求求你快响阿……
闹钟很听话的不响
终于,门动脚步响,来人又出去了
然后,闹钟如我不祥的预感一般,又开始响,还有振
果然!是间断闹……
我躺在床上纹丝不动
闭着眼睛脑中一片清明:有人回来啊有人回来啊把闹钟按掉了阿……
未几,闹钟又安静了
未几,有人回来了
祈祷
未果
未几,来人走了
闹钟响了
再祈祷
……
如此这般,mm s 进进出出一早上,每个间隙,闹钟必响,无一例外

好不容易熬到mm s都走了,一定把手机带走了吧
终于终于终于终于,终于可以睡觉了吧
未几,头的正前方一米远处又闹钟很专业的开响
这回不是手机不是间断闹这回是闹钟的持续闹!!!

我的大好晨光阿

ps:blogcn好像升级了,行距变小了,显得同样大小的字体也好像变小了,看起来紧凑了好多,不过这样文章就短了,都不够篇幅,得招滥竽充下数才行啊






 
emma @ 2006-07-17 21:37

他们都老了

韩松落

    从前,有个青年,父亲是厨师,母亲是佣人,他打小就进了戏班子,在师傅的皮鞭下长大,他不甘心这样过一辈子,一心想混出点名堂。那时候,古龙的小说改的电影最火,一部接一部地拍,他凭着一腔少年心气,终于在片场凑到古龙面前,说:“我想演你的电影”,但他得到的回答是一句冷冷的“我的电影只用大明星。”多年后,他成了华人世界的英雄,圈子里的大哥,但他不给自己的妻子一个名分,不承认自己的孩子,当别人的出现可能威胁到自己儿子的地位,他立刻放出话去:“田亮在演艺圈没前途”,而最新的逸事,是在李宗盛演唱会上,他醉酒闯舞台,洋相百出,更用麦克风与观众用脏话对骂。他是成龙,他老了。
    从前,有个青年,18岁步入歌坛,虽然形象并不出众,歌艺也并不特别出色,但他认真地唱着情歌,20年来出的专辑、精选、合辑有40张。多年后,他毒舌猛批余天的儿子,令他精神失常,又屡次与事业伙伴反目,更在节目中骂自己的女搭档是“畜生”。他是巫启贤,他老了。
    从前,有个女孩子,娇俏清纯,被人当作“落入凡间的精灵”,更写得一手好文章。这一身才情,令她出现在大师侯孝贤和彼得·格林那威的电影中,而她的偶像,竟是特蕾莎修女。多年后,她假唱,借幼子炒作,只要上综艺节目,她一定不忘记谈及她的珠宝和鞋子的价格,又因过早放出风,称自己在一出电视剧中获得演出机会,导致戏份落空而成了笑柄。她是伊能静,她老了。
    从前,有个青年,一边做苦力,一边在演员训练班学习,终于成了一代人的偶像。多年后,他大话不断,更在公开场合嘲弄自己的老妻:“我让你去死,你去死吗?”他是周润发,他老了。
    许多慢性病,会在四五十岁发作,因为那时抵抗力渐弱,而疾病的侵蚀积重难反,人性里的缺陷也是如此,年轻时,因为自己的不够强大,因为没有机会,因为心中所图所欲还没有得到,不得不反省、收敛、伪饰,有苗头也要压着,终于老去,终于成了权威,终于可以为所欲为,终于要什么就有什么,就渐渐松懈,自省力渐弱,而岁月名利的侵蚀积重难反,终于令人性中的疾病渐入膏肓。
    所以,三岁看大,五岁看老,并不准确,在已经老去,在能够为所欲为时显露出的人性人品,最精确。



 
emma @ 2006-07-11 04:26

    锋锋的表演还稚嫩得很,比起《新警察故事》和《恋爱行星》来,古装戏还是有点距离,演起来不够自然鲜活,缺乏万丈自如的功力,不少地方着力过猛,演得辛苦但效果不好。感情戏很生,距离感很重,连见铁心兰最后一面进门背着一只手,不紧不慢端坐病榻,离铁心兰有半个穿的距离不说还做得身子倍儿直,铁心兰靠过来还歪都不歪,这谱儿也摆得太过了吧?锋锋啊,表演这条路你是走对了,但连范冰冰都演得不露痕迹,你还要好好加油啊,你还要磨好久,挺住啊,不过你还年轻嘛,26岁,浑圆纯熟的境界慢慢摸索吧。
  不过天生的资质好,一袭白衣帅得一塌糊涂,这次的发型几乎和他当年初出道一模一样,温柔中带着狂放不羁,看似冷酷但是心如赤子,王晶的审美果真还不错:em21:。说到审美,不得不提这部电视剧的美工作的相当不错,女主角选的都是我喜欢的类型,从装扮服饰到场地器具,从外景到特技,都看得很养眼,即使我讨厌范冰冰也不得不承认她确实很漂亮,即使没什么漂亮的袁泉都让我觉得惊艳(也确实北上一部《吕布与貂蝉》吓到了),下人们也都算得上好看,小短裙眼前飘啊飘的,连张卫健扮女人都可以算得上是颇有姿色。然而王晶同学的审美厉害之处,不仅在于把该鲜明的人物扮的生动可爱,还在于把猥琐的人物打造得一眼就让人作恶。例如徐锦江同学,例如屠娇娇同学,他们就是要衬出红花,不能好看,但不能可恶,所以形象打造的,很合适。不过失败的是,江枫这个美男子却是没找对人,我一眼看到就叫娘,连着燕南天都几乎不堪入目,既不英俊又无侠气,可怜花月奴这么娇小惹人怜,可怜一代大侠的名号。
  太远了拐回来。无缺公子,从小被移花宫束缚,并不适合他的离经叛道。霆锋骨子里还是保守的,他坚持的东西决不会放弃,顽固起来绝对是雷打不动。他从小可能做过无缺,明星家庭的教育自然不会差,但决不会是什么都不缺,他想要的,要靠自己去争取,无缺公子,公子无缺。


 
emma @ 2006-07-10 05:11

遗恨
也许世界是对抗圆满的,不允许太完满,只有遗恨才能被人铭记。齐祖一个铁头,晚节不保。
悲情的背影,成为世界杯的一打主打。


 
emma @ 2006-07-09 23:38

我喜欢的裙子,我中意的男子

裙子,就是要有修长的摆才动人,就是要有层叠的褶才含蓄,风吹过时会有漾水的鳞鳞波纹皱起来才显得温存,晴风秀色著罗裙。
因此我极其厌恶一步裙和筒裙,一马平川缺乏变化,没了曲径通幽的趣味,也就少了玩味的情感而显得呆板,令人生厌。超短裙也不是怎么上眼,一眼看上去美腿秀,旗袍和和服更是算不上裙子,厚厚的布筒把人裹成一个大包袱,表面的花纹再漂亮也改变不了呆滞的本质,看看明朝的女装,凤尾裙,花冠裙,八叶裙,月华裙,湘妃裙,光听名字就溢得满是女子的温柔,各不要说相应装饰的刺绣、滚镶、宫绦、环佩种种的流畅华美了。

就像我中意的男子,要有宽大的手掌,才有打动人的力量。那是很厚重很安全的古朴,可以把一切融在手心里的感觉,可以执子之手,长此终老,有郭靖的味道。
古龙常这样写男人的手,不管是否握着剑:这是一双宽厚有力的手,修长的手指,修剪合适的指甲,看似普通,却深藏着惊人的力量。我就是喜欢这种古朴若拙宽厚温暖的手。



 
emma @ 2006-07-03 21:43

还是曹雪芹说得好,机关算尽太聪明,皇太极谋略缜密,难得的政治家,但过分的猜疑让他不相信任何人,最后只是孤家寡人。
刘青云真是好看,把皇太极的深谋远虑果断冷酷演得入木三分,尤其人到暮年的憔悴,一个眼神都透出狐疑,又不动声色,相当的好看耐看,爱死了还有尔东升,当年的一线小生,现在香港的资深导演,虽然不比花样美男,但绝对是温柔型男,况且儿时先入为主,他永远是我心目中又爱又恨的多尔衮,尔东升和刘青云这两员大将令这部电视剧火热升温。虽然千娇百媚的紫娃娃是一大看点,大眼睛要渗出水来,而且扮相相当相当漂亮!!!但潘迎紫和赵雅芝一样,有美貌有气质,表演相当模式化,小时候中意她相当深,但刘青云也是极深的印象,如今再看更觉刘青云演技高超,佩服的紧
去年宁静新版《孝庄秘史》,马景涛一身肥肉,真是受不了,唯一欣慰的是刘德凯出演皇太极,刘德凯呵,费云帆出身,秦始皇强悍,还有努达海,近年来也向导演界发展,出了部周迅张信哲《烟雨红颜》,ms不错的说,我对刘德凯有信心。
歌里唱:最大的伤痛,就是无法忘记你。忘不掉,真是个坏毛病,可我还有个更坏的毛病,想记的记不住想忘的忘不掉。

       多尔衮像哈姆雷特,优柔寡断,雄心止于人臣,要成王者没有果断与冷酷的手段是不行的,性格悲剧的说,命中注定吧。
       大玉儿辛辛苦苦熬到了皇太极归天,以为支持多尔衮就可以安详以后,却没想到一向不问世事的海兰却公开把福临推到前台。海兰这一招实在是高,越是平时不起眼的人,关键时刻一发彪越能杀人一个措手不及,虽然海兰本无心,但她的好心改变了一个时代阿。
       大玉儿是强人,好好学学。



 
emma @ 2006-07-02 08:18

多疑、缜密、老谋深算、铁手无情,都不说了
tmd还把小玉儿嫁给多尔衮,这招真是狠,不愧是千载难逢的政治家,出手就是处处掐住要害,不露声色,一刀下来就是个狠摊子,服了
这辈子不要玩这个,太恐怖,会短命的


 
网志分类
· 所有网志 · 江河万古流 · 云天高万仞 · 未分类 ·
最新的评论
站内搜索
发散组织
· 歪我 生活在别处

订阅 RSS

0008091

歪酷博客