2006年02月27日

这个是课程设计的一个作业,我用的是该死的RadHad9.03,单个窗口程序运行都没有错误,但是放到一起就不能弹出窗口,放到别的系统(如debian)下就没有这个问题!真是该死!(注:现在问题已经解决)

1,窗口程序:

#include <gtk/gtk.h>
#include <unistd.h>
#include <sys/types.h>

void  destroy (GtkWidget *widget,gpointer *data)
{
 gtk_main_quit();
}

int main (int argc, char *argv[])
{
 GtkWidget *window;
 GtkWidget *label;
 GtkWidget *vbox;
 GtkWidget *frame;
 
 gtk_init (&argc,&argv);

argc=1;                        /*由此处向下2行为修改部分,解决无法同时显示问题*/

argv[0]="./proc"/*proc为主函数的名字*/
 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

 gtk_window_set_title(GTK_WINDOW (window), "The First Window");

 vbox = gtk_vbox_new (FALSE,20);

 gtk_container_add(GTK_CONTAINER (window),vbox);

 frame = gtk_frame_new ("The First Label");
 
 label = gtk_label_new ("================Hello================");

 gtk_container_add (GTK_CONTAINER (frame),label);
 gtk_box_pack_start(GTK_BOX (vbox),frame,FALSE,FALSE,0);

 gtk_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC (destroy),NULL);

 gtk_widget_show_all(window);

 gtk_main();

 return 0;
}
(这是个例子,其他两个可以和这个完全一样)

2,主程序:

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
main()
{
 pid_t pid1,pid2;

 pid1=fork();
 if(pid1==0)
 {
  puts("The First Window Created\n");
  execv("./hello",NULL);
 }
 else
 {
  pid2=fork(); 
  if(pid2==0)
  {
   puts("The Second Window Created\n");
   execv("./haii",NULL);
  }
  else
  {
   puts("The Third Window Created\n");
   execv("./heii",NULL);
  }
  
 }
}

2006年02月25日

课程设计都开始快一个星期了!我现在才正式投入。真是堕落 !

  刚刚开始就碰上个钉子,编写一个简单的Gtk窗口(其实是copy的),老师给的编译命令是gcc xxx.c -o xxx.c `gtk-config -cflags“gtk-config -libs` 我试了好多次都没有编译成功,仔细一看,原来那两对引号是反引号,我倒~~~~,再试,晕!!!怎么还是不可以,上网查,我。。。。。。,原来老师给的根本就是个错的,正确的是:gcc xxx.c -o xxx.c `gtk-config –cflags“gtk-config –libs` 少了两个“-”阿!彻底晕倒、、、、、、,这linux还真是麻烦到了极点了!

2006年02月24日

今天开了这个Blog,以前也曾经有过,但是多方面原因没有坚持写下去。

现在就由此地开始,写下自己的生活,记下自己的收获!

恐怖类

1. 《吸血莱恩》BloodRayne
上映日期:2006年1月6日
主演:本·金斯利 阿杜·基尔
类型:动作/恐怖/荒诞
导演:乌维·鲍尔
发行公司:Romar Entertainment
之前曾经由欧洲Majesco公司跨Xbox、PS2以及PC等平台推出,以吸血鬼为题材的动作游戏《BloodRayne》,现在被德国电影公司Boll KG投入3000万美金拍摄成电影。女主角是《终结者3》中 的“TX”美女终结者——克莉斯汀娜·罗肯,在片中扮演一个半人半吸血鬼的角色,为了复仇而计划推翻她的父亲——吸血鬼之王Kagan。

2. 《黑夜传说2:进化》
Underworld: Evolution
上映日期:2006年1月20日
主演:凯特·贝金塞尔
   德里克·雅克比
导 演:伦·维斯曼
类型:剧情/恐怖/动作/奇幻
发行公司:SONY
大家还记得《黑夜传说》吗?这是一部比较另类的吸血鬼题材电影,卖点是美女与暴力美学。小编看过,虽然不算最好看,但影片整体来说还是挺刺激的。2006年上映的是第2部——《黑夜传说2:进化》,据说该系列接下来还要拍第3部——《黑夜传说前传》。喜欢片中女主角凯特·贝金塞尔的影迷可以大饱眼福了

3. 《逃脱死亡:死神来了3》
Cheating Death: Final Destination 3
上映日期:2006年2月10日
导 演:黄毅瑜
主 演:玛丽·文斯蒂德 赖安·梅丽曼
类型:剧情/恐怖
发行公司:新线影业
死神又来了,作为《死神》系列第三部电影,本片由《死神来了》、《救世主》和《X档案》的黄毅瑜(华裔导演)执导。随着温丝黛特扮演的高中学生温迪克林斯邓森展开,她预感到几个朋友坐过山车时将遇难,而避过了这一劫。她在对抗时间的赛跑中和同学凯文费舍组织在一起,防止死亡以及意外事故的方式再度降临在这些幸存者身上
4.《惊声尖笑4》
Scary Movie 4
上映日期:2006年4月14日
主演:安娜·法瑞丝 瑞吉娜·赫尔
导演:大卫·朱克
类 型:恐怖/喜剧
发行公司:温斯坦公司
这是《惊声尖笑》的第四部了。你还记得《惊声尖笑》的一大特色吗?那就是在片中影射时下热门的娱乐圈事件影片。所以《惊声尖笑4》仍然以重组经典电影场面的搞笑版本作为招徕绝技,以便能够用低成本在美国票房换得高回报

5. 《寂静岭》Silent Hill
上映日期:2006年4月21日
主演:拉达·米契尔 肖恩·宾
导演:里斯托弗·甘斯
类型:恐怖
发行公司:SONY
本电影完全改编自游戏,而且医院、异世界以及被烟雾笼罩的世界也将表现出来。罗斯背着丈夫,私自将重病的女儿带到神婆那儿寻求治疗。接着发生了很多奇怪的事情,首先,罗斯在毫无察觉的情况下穿过结界到了一个奇怪的世界,然后女儿也不见了。在寻找失落的女儿的过程中,她发现整个小镇充满着恐怖的恶魔,而且任何接触黑暗的事物都发生了扭曲变异,最后在警察的帮助下罗斯终于结束了这场可怕的梦魇

===========================================
科幻类

6. 《V字仇杀队》》
V for Vendetta
上映日期:2006年3月17日
主演:娜塔丽·波特曼 雨果·维文
类型:科幻/惊悚/剧情/动作
发行公司:华纳兄弟
影片根据著名作家阿兰·摩尔的同名绘本小说改编。故事发生在虚构的未来,假定德国赢得了第二次世界大战,英国因此而成为极权国家。一个代号为“V”的孤单英雄与女主角组成了黄金搭档,秘密从事颠覆极权的革命活动。本片由《黑客帝国》的华考斯基兄弟担任编剧

7. 《X战警3》X-MEN 3
上映日期:2006年5月26日
主演:休·杰克曼
   帕特里克·斯图尔特
导演:布莱特·拉特纳
类型:动作/科幻
发行公司:20世纪福克斯

在最新的《X战警3》里,风暴女、X博士和金刚狼将继续对抗“万磁王”(前两部中的“金刚狼”休·杰克曼和“风暴女”哈利·贝瑞将继续出现在本片中)。这次联盟里又添新变种人──擅长引诱男人的变种美女。她对付异性敌人的招数不是动武,而是运用一股神秘力量来让男人乖乖就范。凯尔塞·格拉玛和维尼·琼斯则在其中分别饰演“野兽”和“神像”。据说,热门电视剧集《迷失》(lost)的麦姬·格雷斯也在洽谈出演“穿墙美女”基蒂·普莱德。这次,真是美女如云呀

8. 《超人归来》Superman Returns
主演:布兰登·罗素 凯特·伯斯沃茨
导演:布莱恩·辛格
类型:科幻/动作/惊险
发行公司:华纳兄弟
这次是执导《X战警》的导演布莱恩·辛格担纲。超人的男主角已经被选定由年轻演员布兰登扮演。故事讲述超人消失了5年后终于回到地球,却发现他的爱人路易斯已经有了儿子和未婚夫。这五年间到底发生了什么?超人能重新拯救地球并挽回昔日恋情吗?戴上黑框眼镜的布兰登·罗素非常酷似前超人——克利斯托弗·里夫。而大家都知道,当年在老《超人》一片中扮演重要角色的两位知名演员——克里斯托弗·里夫和马龙 ·白兰度已经在刚刚过去的2004年中先后辞世,让我们通过新片来纪念这两名巨星吧

9. 《侏罗纪公园4》
Jurassic Park 4
上映日期:2006年夏季
主演: 凯拉·奈莉 山姆·尼尔
制片:史蒂文·斯皮尔伯格
类型:冒险/惊悚/科幻/恐怖
发行公司:环球影业
一群倒霉人再次陷入侏罗纪公园。在这个恐龙的乐园里,人们面临新的危机……新影片里可能会有部分内容讲述到6500万年前末恐龙时代的一次大规模病毒爆发。但在此事发生多个世纪后, 病毒因约翰·韩文的重组恐龙计划而被意外重新带回世上。而且病毒更有爆发大规模传染的潜在危险, 究竟来龙去脉如何?一切又是怎样产生的?由于此片保密功夫一流,只有晚些时间看到影片才知道了

10. 《人类之子》
The Children of Men
上映日期:2006年9月29日
主演:朱丽安·摩尔 克里夫·欧文
导演:阿方索·卡隆
类型:科幻/冒险
发行公司:环球影业
故事设定在不远的未来,那时的人类基本上失去生殖能力。当地球上最小的一个18岁少年死去后,绝望的人类社会发生了大骚乱。就在此时,克里夫·欧文扮演的角色奉命保护地球上最后一位有生育能力的女人,以延续人类生命的故事。此片导演是曾执导《哈利波特:阿兹卡班的逃犯》的阿方索·卡隆

==========================================
动画类

11. 《冰河世纪2:消融》
Ice Age 2: The Meltdown
上映日期:2006年3月31日
配音:雷·罗马诺 约翰·雷吉扎默
导演:卡洛斯·萨达纳
类型:动画/喜剧
发行公司:20世纪福克斯
本续集将继续延续第一集诙谐幽默的喜剧风格,一定是一部让你捧腹的动画大作。随着冰河世纪的趋于结束,所有幸存的生命都在欢欣鼓舞,但是随着冰川的快速融化,第一集中的三位主角——剑齿虎迭哥、树獭希德和长毛象曼尼生存的山谷面临着被洪水淹没的危险……三只动物只得担负起灾难前警告同伴撤退的艰巨任务

12. 《篱笆墙外》
Over the Hedge
上映日期:2006年5月19日
配音:布鲁斯·威利 加里·山德林 艾薇儿·拉维尼
导演:蒂姆·约翰逊
发行公司:梦工厂

梦工场新动画《篱笆墙外》讲述的是一个浣熊艺术家来到郊外的森林中,他非常惊讶生活在人类旁边的动物在忍受着饥饿。小动物都非常害怕人类,这其中包括曾经被一个小男孩欺负过的动物首领老龟。在浣熊的鼓励下小动物们跨过了围墙,看到了一个完全崭新的世界。那里的人们都非常友好,会留给动物们很多的食物。但当他们越来越与人类亲近的时候,危险降临了。本次配音阵容强劲,除有布鲁斯·威利加盟以外,还有“摇滚小魔女”艾薇儿首次“触电”大银幕

13. 《汽车总动员》Cars
上映日期:2006年6月9日
配音:保罗·纽曼 欧文·威尔逊
导演:约翰·雷斯特
类型:动画/喜剧/家庭
发行公司:迪斯尼(皮克斯)
本片是由迪斯尼和Pixar(皮克斯)公司联手推出的动画新片。故事的主角是一部时髦拉风的赛车,梦想在Route 66道路上举行的赛车大赛中脱颖而出,成为车坛新偶像。但不料他在参赛途中却意外迷路,闯入一个陌生的城镇,并展开了一段超乎想像的意外旅程……

14. 《夏洛的网》Charlotte’s Web
上映日期:2006年夏季
上映日期:2006年6月23日
主演:达科塔·法宁 朱莉亚·罗伯茨
导演:盖瑞·温尼克
类型:家庭/动画
发行公司:派拉蒙
这是一个关于友谊、磨难的故事,改编自知名作家怀特所著的同名儿童故事书,导演是曾执导过《女孩梦三十》的盖瑞·温尼克。本片的主角是一只有点害羞的小猪威尔伯,它与一只名叫夏洛特的蜘蛛交上了朋友。威尔伯知道大限将至,将成为餐桌上的美食而变得狂躁不安。夏洛特决定要救它的朋友,便和威尔伯酝酿了一个计划,以保证这样的惨事不再发生


15. 《狩猎季节》Open Season
上映日期:2006年9月29日
配音:阿什顿·库彻 马丁·劳伦斯
导演:吉尔·库尔顿
类型:冒险/动画
发行公司:SONY
SONY公司也想趟CG电影的浑水了。其制作的《狩猎季节》能否在当前众多的CG电影中脱颖而出呢,我们拭目以待。故事发生在森林里,心惊肉跳的狩猎季节又开始了,一只稀里糊涂的鹿和一只被人类驯化的熊平日里是冤家对头,但当狩猎季节来临的时候,他们只能暂时联合起来面对虎视眈眈的猎手们……

16 《疯狂农场》Barnyard
上映日期:2006年10月6日
配音:考特妮·考克斯·阿奎德
山姆·艾略特
导演:史蒂夫·奥依戴柯克
类型:动画/喜剧
发行公司:梦工厂
史蒂夫·奥依戴柯克(Steve Oedekerk)
是何许人呢?原来,他就是执导《肥佬教授》、《神探飞机头续集》和《昆宝出拳》的导演,是一个想象力超级丰富的人啊。他执导的影片应该是值得期待的。新片《疯狂农场》依然会继续梦工厂动画的搞笑路线,主角是农场的牛儿们,它们将与人类展开了斗智斗勇的斗争。最后一定会是牛儿们获胜吧!


17. 《冲走小老鼠》
Flushed Away
上映日期:2006年11月3日
配音:休·杰克曼
   凯特·温斯莱特
导演:亨利·安德森
发行公司:梦工厂
故事主人公是一只贪吃的英国老鼠,住在一处时髦优雅的小棚屋里,有一天它意外地被抽水马桶冲到了发着恶臭的伦敦下水道里。在它拼命回家的过程中,这只小老鼠爱上了这个脏兮兮、黏糊糊的下水道和那里的居民


18. 《欢乐的大脚》
Happy Feet
上映日期:2006年11月17日
配音:妮可·基德曼
   伊利亚·伍德
导演:乔治·米勒
类型:冒险/动画/歌舞
发行公司:华纳兄弟
由著名导演乔治·米勒制作的2006年最新动画片《Happy Feet》,讲述的是一只能歌善舞的企鹅的故事。本片配音阵容强大,除有妮可·基德曼客串以外,还有罗宾·威廉姆斯等参与其中


===========================================
奇幻类

19. 《加勒比海盗2:死人胸膛》
Pirates of the Caribbean 2:Dead Man’s Chest
上映日期:2006年7月7日
导 演:戈尔·弗宾斯盖
主 演:约翰尼·德普 奥兰多·布鲁姆 凯拉·奈特莉
类型:动作/冒险/奇幻
发行公司:迪斯尼
继去年上映的《加勒比海盗1——黑珍珠的诅咒》之后,约翰尼扮演的杰克船长发现他欠了会飞的荷兰人船长大卫琼斯一笔血债。随着时间的推移,杰克必须找出一个办法从这笔债务和永恒诅咒中摆脱出来。如果这还不够,船长的问题就是设法破坏威尔特纳和伊丽莎白斯沃恩的结婚计划,迫使他们加入杰克另一次依然运气欠佳的冒险行动。续集将更加突出骷髅海盗的主题,片中还将出现一条叫“克拉肯”的大乌贼和其他东西……而女主角凯拉·奈特莉在片中则会挥舞双剑,亲上战场。同时,《加勒比海盗3》也开始拍摄了,计划上映时间是2007年夏天,让我们继续期待吧


20. 《伊拉贡》Eragon
(亦被译为《龙骑士》)
上映日期:2006年5月26日
上映日期:2006年12月15日
主演:德·斯皮里尔斯
   约翰·马尔科维奇
导演:斯蒂芬·方米尔
类型:幻想/科幻/动作
发行公司:20世纪福克斯
《伊拉贡》根据同名小说改编而成,最为奇迹的是作者克里斯多弗·鲍里尼20岁不到,真是年轻有为呀。《伊拉贡》是《遗传三部曲》中的第一部,融入了诸如飞龙、战马、精灵、矮子等奇幻元素。在充满诡谲传说的大山之中,狩猎少年伊拉贡(Eragon)拾获一颗蓝色奇石。没想到,这颗石头竟孵出一只蓝色飞龙!伊拉贡为小龙命名为“萨菲拉”(Saphira),把她视为最亲密的朋友。但是,萨菲拉却为伊拉贡的亲人惹来杀身之祸。悲痛的伊拉贡为了复仇,开始学习魔法、剑术及古语,最终踏上艰辛的复仇之旅。本片导演斯蒂芬·方米尔是首次执导长片,此前他一直担任“工业光魔”公司的特效总监,得意作品包括 《拯救大兵瑞恩》和《完美风暴》。

21. 《辛巴达第八次航行》
The 8th Voyage of Sinbad
上映日期:2006年
主演:基努·里维斯
导演:罗布·科恩
类型:奇幻
第八次出海航行,辛巴达和他的船员来到了公元八世纪的中国寻找传说中的阿拉丁神灯。在路上他们遇见了美丽的女皇武则天、一个神秘的精灵和一个野心勃勃的反叛将军——想通过超能力攫夺皇帝的宝座。新任辛巴达的人选已经确定为基努·里维斯,而女皇武则天的扮演者则很有可能是章子怡


22. 《霍比特人》
The Hobbit
上映日期:2006年
主演:伊安·麦克莱恩 安迪·瑟金斯
导演:彼得·杰克逊
发行公司:新线
《霍比特人》可视为《指环王》三部曲的前传,讲述《指环王》的主人公弗罗多的叔叔比尔伯年轻时的冒险历程,其中会涉及神秘指环哟

============================================
剧情类

23. 《安纳波利斯》Annapolis
上映日期:2006年1月27日
类型:剧情
主 演:詹姆斯·佛朗哥
泰瑞斯·吉布森
导 演:Justin Lin(沈文斌)
发行公司:试金石
本片主演詹姆斯·佛朗哥曾主演《蜘蛛侠》及《詹姆斯狄恩传》电视剧,而泰瑞斯·吉布森则曾主演《梦幻重案组》、《速度与激情2》及《凤凰劫》影片。《安纳波利斯》以海军学院内的搏杀故事为背景,讲述了一个认为自己入错海军的年轻人成为一个真正战士的故事


24. 《本能2之危险吸引力》
Basic Instinct 2: Risk Addiction
上映日期:2006年3月10日
主演:沙朗·斯通 大卫·莫瑞西
导演:迈克·卡顿·琼斯
类型:惊悚/犯罪/悬念
发行公司:米高梅/SONY
发行公司:20世纪福克斯

1992年的著名电影《本能》(Basic Instinct),是由沙朗·斯通和奥斯卡影帝迈克尔·道格拉斯(Michael Douglas)共同主演的。影片中一名调查谋杀案的警官与调查对象、一名性感的小说女作家之间发生了难以抗拒的感情关系。此片曾被誉为90年代最棒的色情惊悚片。而2006年上映的《本能2之危险吸引力》,则将涉及女性同性恋的内容,更加出位了。故事发生地从美国转换到了英国伦敦,沙朗·斯通仍担纲主演。讲述的是性感的小说家凯瑟琳·瑞美尔离开了旧金山来到伦敦。在那里,她与心理医生安德鲁的危险关系就此产生


25 《达芬奇密码》
The Da Vinci Code
上映日期:2006年5月19日
主演:汤姆·汉克斯 让·雷诺
导演:罗恩·霍华德
类型:悬念/剧情/惊悚
发行公司:哥伦比亚影业
哈佛大学的符号学专家罗伯特·兰登(汤姆·汉克斯饰)在法国巴黎出差期间接到一个紧急电话,得知罗浮宫博物馆年迈的馆长被人杀害在罗浮宫的博物馆里,人们在他的尸体旁边发现了一个难以捉摸的密码。兰登与法国一位颇有天分的密码破译专家索菲·奈芙,在对一大堆怪异的密码整理的过程当中,发现一连串的线索就隐藏在达·芬奇的艺术作品当中

26. 《无间行者》
The Departed
上映日期:2006年12月31日
主演:莱昂纳多·迪卡普里奥
   马特·达蒙
导演:马丁·斯科西斯
类型:犯罪/剧情
发行公司:华纳兄弟

这部影片是根据《无间道》改编的重拍片。与其不同的是,本片故事发生在美国波士顿,而犯罪分子也改成了黑手党。故事从上世纪七十年代开始。杰克·尼科尔森扮演的黑帮头子科斯特罗控制了整个波士顿的街区。年仅14岁的科林成为尼科尔森重点培养对象。与此同时,少年比利由于拒绝为科斯特罗效劳,被黑势力所迫害……科林和比利都已经长大成人之后,两人都当上了州警。但是科林(马特·达蒙扮演)依然听命于黑帮头子科斯特罗,他是警方中的卧底,而比利(莱昂纳多扮演)则希望当一个好警察,为父报仇雪恨。在成功打入波士顿有名的黑帮团伙——昆南,并一举歼灭之后,科林获得了提升。与此同时,科斯特罗的势力越来越大。警方遂决定派遣比利扮成黑帮分子前往调查黑帮卧底。随着时间的推移,敏感的科斯特罗也觉察到身边出现了警方卧底,于是警方和黑帮展开了洗底行动……

===========================================
动作类

27. 《谍中谍3》
Mission:Impossible 3
上映日期:2006年5月5日
主演:汤姆·克鲁斯
   凯莉·安·摩丝
导演:J·J·艾布拉姆斯
类型:神秘/惊悚/冒险/动作
发行公司:派拉蒙
《谍中谍》又有新片出来了,这次由曾任热门系列剧《Alias》(双面女间谍)策划的J.J·艾布拉姆斯执导这部大制作,而汤姆·克鲁斯依然担当他的大英雄角色,接受不可能完成的任务。这次他会在电脑专家的帮助下成功消灭邪恶势力


28. 《罪恶之城2》Sin City 2
上映日期:2006年夏季
主演:克里夫·欧文 布兰妮·墨菲
导演:罗伯特·罗德里格斯
类型:动作/犯罪
发行公司:韦恩斯坦公司
看过《罪恶之城》这部电影的人,一定对那个黑白的世界记忆尤深。在那个虚构的城市:罪恶之城中,警察已经被黑帮所腐化。在2006年夏季,《罪恶之城2》又将上市了,新片将延续《 罪恶之城》的黑白色调风格,情节亦由多个小故事组成,让我们拭目以待


29. 《恶灵骑士》Ghost Rider
上映日期:2006年7月14日
主演:尼古拉斯·凯奇 伊娃·曼德丝
导演:马克·斯蒂文·约翰森
类型:动作/幻想/冒险
发行公司:哥伦比亚影业
尼古拉斯·凯奇本就是一位有名的漫画迷,这次他终于出演漫画英雄的角色了。《恶灵骑士》根据Marvel公司出品的畅销漫画改编,一名摩托车特技表演者强尼(尼古拉斯·凯奇饰,要像小伙子那样骑着摩托车对他也是一种挑战呀,但从剧照来看,他还是演得像模像样的),愿意出卖自己的灵魂换取挚爱的性命,从此他被诅咒在夜晚变身成为邪灵附身的恶魔,骑着闪耀地狱之火的摩托车横行街头


30. 《皇家赌场》Casino Royale
上映日期:2006年11月17日
主演:丹尼尔·克雷格 朱迪·丹奇
导演:马丁·坎贝尔
类型:动作/冒险/剧情
发行公司:米高梅/哥伦比亚
英国小生丹尼尔·克雷格脱颖而出,成为第21部007影片——《皇家赌场》的不朽特工詹姆斯·邦德的扮演者(个人觉得这位演员好像过于老成)。而独具野性魅力的安吉莉娜·朱丽极有可能获选克雷格第一个邦女郎的身份。这部电影的导演是曾经执导过《黄金眼》和《佐罗传奇》的马丁·坎贝尔,他透露这部电影“将要讲述邦德事业开始的故事。邦德如何得到“007”的编号,如何得到阿斯顿·马丁跑车及如何调制马蒂尼酒的

图形学实验,在此仅供个人娱乐之用,可以转用。

简单的绘图程序,在Eclipse3.1上编译通过,可以绘制直线,圆,矩形和分形树


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MyGraphics extends JFrame{
 private thePanel myPanel ;
 private JPanel panel;
 private JLabel lable;
 String[] theStatus={"直线","圆_由中心","圆_由边界点","矩形_由中心","矩形_由顶点","分形树"};
 private CheckboxGroup checkg;
 private Checkbox check1,check2,check3,check4,check5,check6;
 public MyGraphics(){
  super("图形学试验_计算机0306班_孟庆伟");
  myPanel = new thePanel();
  panel= new JPanel();
  lable= new JLabel();
  panel.setLayout(new FlowLayout());
  check1 = new Checkbox("直线");
  check2 = new Checkbox("圆_由中心");
  check3 = new Checkbox("圆_由边界点");
  check4 = new Checkbox("矩形_由中心");
  check5 = new Checkbox("矩形_由顶点");
  check6 = new Checkbox("分形树");
  checkg = new CheckboxGroup();
  check1.setCheckboxGroup(checkg);
  check2.setCheckboxGroup(checkg);
  check3.setCheckboxGroup(checkg);
  check4.setCheckboxGroup(checkg);
  check5.setCheckboxGroup(checkg);
  check6.setCheckboxGroup(checkg);
  checkg.setSelectedCheckbox(check1);
  
  panel.add(check1);
  panel.add(check2);
  panel.add(check3);
  panel.add(check4);
  panel.add(check5);
  panel.add(check6);
  Container container=getContentPane();
  container.setLayout(new BorderLayout());
  container.add(myPanel,BorderLayout.CENTER);
  container.add(panel,BorderLayout.NORTH);
  container.add(lable,BorderLayout.SOUTH);

   myPanel.addMouseMotionListener(new MouseMotionListener()
    {
     public void mouseDragged(MouseEvent event)
     {
      lable.setText(theStatus[myPanel.getStar()-1]+"   Form "+myPanel.getX1()+","+myPanel.getY1()+" to "+ event.getX()+","+event.getY());
     }
     public void mouseMoved(MouseEvent event)
     {
      lable.setText(theStatus[myPanel.getStar()-1]+"  Position:"+ event.getX()+","+event.getY());
     }
    });
   check1.addItemListener(new ItemListener()
    {
     public void itemStateChanged(ItemEvent e)
     {
      myPanel.setStar(1);
     }
    });
   check2.addItemListener(new ItemListener()
    {
     public void itemStateChanged(ItemEvent e)
     {
      myPanel.setStar(2);
     }
    });
   check3.addItemListener(new ItemListener()
    {
     public void itemStateChanged(ItemEvent e)
     {
      myPanel.setStar(3);
     }
    });
   check4.addItemListener(new ItemListener()
    {
     public void itemStateChanged(ItemEvent e)
     {
      myPanel.setStar(4);
     }
    });
   check5.addItemListener(new ItemListener()
    {
     public void itemStateChanged(ItemEvent e)
     {
      myPanel.setStar(5);
     }
    });
   check6.addItemListener(new ItemListener()
    {
     public void itemStateChanged(ItemEvent e)
     {
      myPanel.setStar(6);
     }
    });
  try
  {
   UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
  }
  catch(Exception e){}

  setSize(700,500);
  setResizable(true);
  setVisible(true);
 }
 public static void main (String[] args){
  MyGraphics theGraphics = new MyGraphics();
  theGraphics.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}


class thePanel extends JPanel{
 private int x1,x2,y1,y2;
 public int star;
 final double PI=Math.PI/180;
 public thePanel(){
  this.addMouseListener(new MouseAdapter()
      {
       public void mousePressed(MouseEvent event)
       {
        x1=event.getX();
        y1=event.getY();
       }
       public void mouseReleased(MouseEvent event)
       {
        x2=event.getX();
        y2=event.getY();
        repaint();
       }
      }
      );
 
  this.addMouseMotionListener(new MouseMotionAdapter()
      {
       public void mouseDragged(MouseEvent event)
       {
        x2=event.getX();
        y2=event.getY();
        repaint();
       }
      });
  star=1;
 }
 public void setStar(int i){
  star = i;
 }
 public void paintComponent(Graphics g){
  super.paintComponent(g);
  switch(star){
   case 1 :
    g.setColor(Color.BLACK);
    this.drawLine(x1,y1,x2,y2,g);
    break;
   case 2 :
    g.setColor(Color.red);
    this.drawCircle(x1,y1,x2,y2,g);
    break;
   case 3 :
    g.setColor(Color.red);
    this.drawCircle_1(x1,y1,x2,y2,g);
    break;
   case 4 :
    g.setColor(Color.BLUE);
    this.drawCuboid_1(x1,y1,x2,y2,g);
    break;
   case 5 :
    g.setColor(Color.BLUE);
    this.drawCuboid(x1,y1,x2,y2,g);
    break;
   case 6 :
    g.setColor(new Color(67,156,53));
    this.drawLeaf(300.0,500.0,100.0,270.0, g);
    break;
  }
 }
 public int getX1(){
  return x1;
 }
 public int getY1(){
  return y1;
 }
 public int getStar(){
  return star;
 }
 private void drawPoint(int x,int y,Graphics g){
  g.drawLine(x,y,x,y);
 }
 private void drawLine(int x1,int y1,int x2,int y2,Graphics g)
 {
  int dx,dy,d,UpIncre,DownIncre,x,y;
  float k;
  if(x1>x2)
  {
   x=x2;x2=x1;x1=x;
   y=y2;y2=y1;y1=y;
  }
  else
  {
   x=x1;y=y1;
  }
  dx=x2-x1;dy=y2-y1;
  if(dx==0)
  {
   for(y=Math.min(y1,y2);y<=Math.max(y1,y2);y++)
    this.drawPoint(x,y,g);
   return;
  }
  k=(float)dy/(float)dx;
  if(k>=0)
  {
   if(k<=1)
   {
    d=dx-2*dy;
    UpIncre=2*dx-2*dy;DownIncre=-2*dy;
    while(x<=x2)
    {
      this.drawPoint(x,y,g);
     x++;
     if(d<0)
     {
      y++;
      d+=UpIncre;
     }
     else d+=DownIncre;
    }
   }
   else
   {
    d=2*dx-dy;
    DownIncre=2*dx;UpIncre=2*dx-2*dy;
    while(y<=y2)
    {
      this.drawPoint(x,y,g);
     y++;
     if(d>0)
     {
      x++;
      d+=UpIncre;
     }
     else d+=DownIncre;
    }    
   }
  }
  else
  {
   if(k>=-1)
   {
    d=-dx-2*dy;
    UpIncre=-2*dx-2*dy;DownIncre=-2*dy;
    while(x<=x2)
    {
      this.drawPoint(x,y,g);
     x++;
     if(d>0)
     {
      y–;
      d+=UpIncre;
     }
     else d+=DownIncre;
    }
   }
   else
   {
    d=-2*dx-dy;
    UpIncre=-2*dx-2*dy;DownIncre=-2*dx;
    while(y>=y2)
    {
      this.drawPoint(x,y,g);
     y–;
     if(d<0)
     {
      x++;
      d+=UpIncre;
     }
     else d+=DownIncre;
    }    
   }
   
  }
 }
 private void drawCircle(int x1,int y1,int x2,int y2,Graphics g)
 {
  int x,y,d,r;
  r=(int)Math.sqrt((double)(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
  x=0;y=r;d=1-r;
  while(x<=y)
  {
   this.drawPoint(x1+x,y1+y,g);
   this.drawPoint(x1+x,y1-y,g);
   this.drawPoint(x1-x,y1+y,g);
   this.drawPoint(x1-x,y1-y,g);
   this.drawPoint(x1+y,y1+x,g);
   this.drawPoint(x1+y,y1-x,g);
   this.drawPoint(x1-y,y1+x,g);
   this.drawPoint(x1-y,y1-x,g);
   if(d<0)
    d+=2*x+3;
   else
   {
    d+=2*(x-y)+5;
    y–;
   }
   x++;
  }
 }
 public void drawLeaf(double x,double y,double L,double a,Graphics g){
  double x1,x2,x1L,x2L,x1R,x2R;
  double y1,y2,y1L,y2L,y1R,y2R;
  
  float B = 50;
  float C = 9;
  float s1 = 2;
  float s2 = 3;
  float s3 = 1.2f;
   
  if(L>s1){
   x2 = x+L*Math.cos (a*PI);
   y2 = y+L*Math.sin (a*PI);
   x2R = x2+L/s2*Math.cos((a+B)*PI);
   y2R = y2+L/s2*Math.sin((a+B)*PI);
   x2L = x2+L/s2*Math.cos((a-B)*PI);
   y2L = y2+L/s2*Math.sin((a-B)*PI);
   
   x1 = x+L*Math.cos (a*PI);
   y1 = y+L*Math.sin (a*PI);
   x1R = x1+L/s2*Math.cos((a-B)*PI);
   y1R = y1+L/s2*Math.sin((a-B)*PI);
   x1L = x1+L/s2*Math.cos((a+B)*PI);
   y1L = y1+L/s2*Math.sin((a+B)*PI);
   
   g.drawLine((int) x, (int) y,(int) x2,(int) y2);
   g.drawLine((int) x2,(int) y2,(int) x2R,(int) y2R);
   g.drawLine((int) x2,(int) y2,(int) x2L,(int) y2L);
   g.drawLine((int) x1,(int) y1,(int) x1L,(int) y1L);
   g.drawLine((int) x1,(int) y1,(int) x1R,(int) y1R);
   
   drawLeaf(x2,y2,L/s3,a+C,g);
   drawLeaf(x2R,y2R,L/s2,a+B,g);
   drawLeaf(x2L,y2L,L/s2,a-B,g);
   drawLeaf(x1L,y1L,L/s2,a-B,g);
   drawLeaf(x1R,y1R,L/s2,a+B,g);
  }
 }
 public void drawCuboid(int x1,int y1,int x2,int y2,Graphics g){
  this.drawLine(x1,y1,x2,y1,g);
  this.drawLine(x1,y1,x1,y2,g);
  this.drawLine(x2,y1,x2,y2,g);
  this.drawLine(x1,y2,x2,y2,g);
 }
 public void drawCircle_1(int x1,int y1,int x2,int y2,Graphics g){
  this.drawCircle((x1+x2)/2,(y1+y2)/2,x2,y2,g);
 }
 public void drawCuboid_1(int x1,int y1,int x2,int y2,Graphics g){
  this.drawCuboid(2*x1-x2,2*y1-y2,x2,y2,g);
 }
}

以下是用java语言实现的简单的计算器的源代码

在Eclipes3.1上编译通过,仅供个人练习之用,可以随意转用。


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class CalculatorSwing extends JFrame{
 public Double numone,numtwo,memoryspace;
 public StringBuffer text = new StringBuffer(27);
 public boolean haveDot=false;
 JTextField textfield;
 JLabel label;
 final String[] values = {"7","8","9","4","5","6","1","2","3","0","+/-","."};
 int i,status;
 String s;
 public CalculatorSwing(){
  text.append(" ");
  JFrame frame = new JFrame("计算器_计算机0306班_孟庆伟");
  frame.setBounds(546,296,338,274); //设定窗口在屏幕的位置;
  frame.setResizable(false);
  frame.setLayout(new FlowLayout());    
  
  JPanel panelA= new JPanel();
  panelA.setLayout(new BorderLayout());
  JPanel panelB= new JPanel();
  panelB.setLayout(new BorderLayout());

  JPanel panel1=new JPanel();
  JPanel panel2=new JPanel();
  panel2.setLayout(new BorderLayout());
  JPanel panel3=new JPanel();
  panel3.setLayout(new GridLayout(5,1,3,3));
  panel3.setBorder(BorderFactory.createEmptyBorder(0,0,0,5));
  
  JPanel panel4=new JPanel();
  panel4.setLayout(new GridLayout(4,3,3,3));
  JPanel panel5=new JPanel();
  panel5.setLayout(new GridLayout(4,2,3,3));
  panel5.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
  
  textfield=new JTextField();
  textfield.setHorizontalAlignment(JTextField.RIGHT);
  textfield.setText("0.");
  textfield.setColumns(28);
  textfield.setEnabled(false);
  panel1.add(textfield);
  
  label = new JLabel("     ");
  panel3.add(label);
  label.setBorder(BorderFactory.createEmptyBorder(10,5,10,5));
  
  String[] operations= {"Backspace","CE","      C      "};  /*以下内容初始化相关按钮内容*/
  JButton[] operation = new JButton[3];
  for (int i=0;i<3;i++){
   operation[i]=new JButton(operations[i]); 
   operation[i].setForeground(new Color(255, 0, 0));
  } 
  panel2.add(operation[0],BorderLayout.WEST); 
  operation[0].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                                if(text.length()>1){
                                 text.deleteCharAt(text.length()-1);
                                  if(text.length()==1){
                                 text=new StringBuffer(" ");
                                 textfield.setText("0.");
                                }
                                else textfield.setText(text.toString());
                               }
                             }
                            });
  panel2.add(operation[1],BorderLayout.CENTER);
  operation[1].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                                numtwo=new Double(0.0);
                                text=new StringBuffer(27);
                                text.append(" ");                               
                                textfield.setText("0.");
                             }
                            });
  panel2.add(operation[2],BorderLayout.EAST);
  operation[2].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){                            
                                numone=new Double(0.0);
                                numtwo=new Double(0.0);
                                text=new StringBuffer(27);
                                text.append(" ");                            
                                textfield.setText("0.");
                             }
                            });
  panel2.setBorder(BorderFactory.createEmptyBorder(4,0,9,0));
  JButton[] value= new JButton [12];     
  for ( i=0;i<12;i++){
   value [i]=new JButton(values[i]);
   value[i].setForeground(new Color(0, 0, 255));
   panel4.add(value[i]);
   switch(i){
    case  0 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("7");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  1 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("8");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  2 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("9");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  3 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("4");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  4 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("5");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  5 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("6");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  6 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("1");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  7 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("2");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  8 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("3");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  9 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27){
                                text.append("0");
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
    case  11 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                              if(text.length()<=27&&haveDot==false){
                                text.append(".");
                                haveDot=true;
                                textfield.setText(new String(text));
                              }
                             }
                            });break;
        case 10 :value[i].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               if(text.charAt(0)==’ ‘) text.setCharAt(0,’-');
                               else text.setCharAt(0,’ ‘);
                               textfield.setText(new String(text));
                             }
                            });break;
      }                                           
  }    

  String[] calcus = {"/","sqrt","*","%","-","1/x","+","="};
  JButton[] calcu = new JButton[8];
  for (int i=0;i<8;i++){
   calcu[i] = new JButton(calcus[i]);
   if(i==1||i==3||i==5){
    calcu[i].setForeground(new Color(0, 0, 255));
   }
   else calcu[i].setForeground(new Color(255, 0, 0));
   panel5.add(calcu[i]);
  }
   calcu[0].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               status=0;
                               try{
                                numone=new Double(Double.valueOf(textfield.getText()).doubleValue());
                               }catch(Exception ex){ return;}
                               text=new StringBuffer(27);text.append(" ");
                               haveDot=false;
                             }
                            });
  calcu[1].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               status=1;
                               try{
                                numone=new Double(Double.valueOf(textfield.getText()).doubleValue());
                               }catch(Exception ex){ return;}
                               text=new StringBuffer(27);text.append(" ");
                               haveDot=false;
                             }
                            });
  calcu[2].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               status=2;
                               try{
                                numone=new Double(Double.valueOf(textfield.getText()).doubleValue());
                               }catch(Exception ex){ return;}
                               text=new StringBuffer(27);text.append(" ");
                               haveDot=false;
                             }
                            });
  calcu[3].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               status=3;
                               try{
                                numone=new Double(Double.valueOf(textfield.getText()).doubleValue());
                               }catch(Exception ex){ return;}
                               text=new StringBuffer(27);text.append(" ");
                               haveDot=false;
                             }
                            });
  calcu[4].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               status=4;
                               try{
                                numone=new Double(Double.valueOf(textfield.getText()).doubleValue());
                               }catch(Exception ex){ return;}
                               text=new StringBuffer(27);text.append(" ");
                               haveDot=false;
                             }
                            });
  calcu[5].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               status=5;
                               try{
                                numone=new Double(Double.valueOf(textfield.getText()).doubleValue());
                               }catch(Exception ex){ return;}
                               text=new StringBuffer(27);text.append(" ");
                               haveDot=false;
                             }
                            });
  calcu[6].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               status=6;
                               try{
                                numone=new Double(Double.valueOf(textfield.getText()).doubleValue());
                               }catch(Exception ex){ return;}
                               text=new StringBuffer(27);text.append(" ");
                               haveDot=false;
                             }
                            });
  calcu[7].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               status=7;
                               try{
                                numone=new Double(Double.valueOf(textfield.getText()).doubleValue());
                               }catch(Exception ex){ return;}
                               text=new StringBuffer(30);text.append(" ");
                               haveDot=false;
                             }
                            });
  calcu[7].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               if(status!=5&&status!=3){try{
                                numtwo=new Double(Double.valueOf(textfield.getText()).doubleValue());
                               }catch(Exception ex){ return;}}
                               text=new StringBuffer(27);text.append(" ");
                               switch(status){
                                case 0: if(numtwo.doubleValue()!=0){
                                     numtwo=new Double(numone.doubleValue()/numtwo.doubleValue());textfield.setText(numtwo.toString());
                                    }else textfield.setText("除数不能为0");numone=numtwo; break;
                                case 1: if(numone.doubleValue()>=0){
                                     numtwo=new Double(Math.sqrt(numone.doubleValue()));
                                     textfield.setText(numtwo.toString());
                                     numone=numtwo;
                                    }
                                    else textfield.setText("负数不能开方");break;
                                case 2: numtwo=new Double(numone.doubleValue()*numtwo.doubleValue());textfield.setText(numtwo.toString());numone=numtwo;break;
                                case 3: numtwo=new Double(numtwo.doubleValue()/100.0);textfield.setText(numtwo.toString());numone=numtwo;break;
                                case 4: numtwo=new Double(numone.doubleValue()-numtwo.doubleValue());textfield.setText(numtwo.toString());numone=numtwo;break;
                                case 5: if(numone.doubleValue()!=0){numtwo=new Double(1.0/numone.doubleValue());textfield.setText(numtwo.toString());}
                                        else textfield.setText("分母不能为0");numone=numtwo;break;
                                case 6: numtwo=new Double(numone.doubleValue()+numtwo.doubleValue());textfield.setText(numtwo.toString());numone=numtwo;break;       
                               }
                               haveDot=false;
                             }
                            });
  String[] memorys = {"MC","MR","MS","M+"};
  JButton[] memory = new JButton[4];
  for (int i=0;i<4;i++){
   memory[i]=new JButton(memorys[i]);
   memory[i].setForeground(new Color(255, 0, 0));
   panel3.add(memory[i]);
  }
  memory[0].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               try{
                                memoryspace=new Double(0.0);
                               }catch(Exception ex){ return;}
                               label.setText(" ");
                               haveDot=false;
                             }
                            });
  memory[1].addActionListener(new ActionListener(){
                             public void actionPerformed(ActionEvent e){
                               try{                              
                               text=new StringBuffer(27);text.append(" ");text.append(memoryspace.toString());
                               }catch(Exception ex){ return;}
         

   “在这里我们都是杀手”
                   ---观《毁灭之路》
汤姆.汉克斯是我最喜欢的好莱坞影星之一。他主演的《阿甘正传》、《荒岛余生》、《绿色奇迹》、《电子情书》……都是永存世人心中的名片。我喜欢《毁灭之路》胜过喜欢李连杰的《救世主》,当然他们是两个完全不同风格的影片。
     杀手的道路只有一个终点,以杀人为职业注定将被别人杀害。但是杀手又有他自己的生活哲学。被朋友追杀可不是一件好玩的事情,“麦克.苏利文”就遇上了这档着麻烦事。妻子和小儿子被自己一直为其卖命的雇主的儿子杀害,从此苏利文和大二子走上了逃亡和复仇的道路。敌人的势力遍及各地,苏利文用自己的智慧和他们周旋,寻找老友到被拒绝、银行“抢”款到杀掉愁人……这个道路他走腻了。大仇得报,带着打儿子一起远走高飞,寻找着梦寐以求的解脱。可世事难料,杀手的复仇伤害了他仇人的生意伙伴的利益,他结了个更大的仇人,以为可以置身外的他却迎来了生命的终结。
     一个复仇杀手死亡前眼里写着什么?面对自己的儿子他心中会作合感想。复仇?用敌人的血来祭奠自己?不,他的眼睛已经诉说了一切,忘记仇恨,生命中还有许多的美好。
   “人之将死,其言也善”,杀手之路,毁灭之路。但生命并不是毁灭,美好的事物憎恨毁灭,他希望儿子不要再踏上这条“毁灭之路”。